python编写类
⑴ 如何设计好一个python的类
理解好python类是理解面向对象的编程语言的很重要一部分。首先我们明确一下:
什么是class?简单来说,class是数据和函数有逻辑的组合。所谓逻辑的组合指的是数据和class里的函数都是息息相关的。所以class “can be thought of asblueprints for creating objects”。 这里我举一个简单的例子:
classCustomer(object):
""".:Attributes:name:'sname.balance:'saccount."""
def__init__(self,name,balance=0.0):
"""*name*andstartingbalanceis*balance*."""
self.name=name
self.balance=balance
defwithdraw(self,amount):
"""*amount*dollars."""
ifamount>self.balance:
raiseRuntimeError('.')
self.balance-=amount
returnself.balance
defdeposit(self,amount):
"""*amount*dollars."""
self.balance+=amount
returnself.balance所以我们可以看到,class里面重要的两个元素: Attributes and Methods。因为我们需要理清楚这两者之间的关系。Attribute就是这个属于这个class 的对象的属性。比如这个例子里的名字(name)和余额(balance)。基于这些属性的对象,我们定义了方法取钱(withdraw)和存钱(deposit)。所以整个class就显得非常清晰了。
除此之外,当class复杂起来的时候,我们还需要考虑比如哪些methods是static的;以及有没有必要建立abstract base class让我们去inherit。
纯手码 希望对你有帮助!
⑵ 用Python编写
classCube:
def__init__(self,length):
self.length=length
defset_color(self,color):
self.color=color
defvolume(self):
returnself.length**3,self.color
if__name__=='__main__':
test=Cube(3)
test.set_color('green')
print(test.volume())
这是简单的类的定义
⑶ 什么是python编程
Python是一门新兴的编程语言,编程语言有很多,比如C++、Java、C#、PHP、JavaScript等,Python也是其中之一,在学习Python前,我们需要对它有一定的了解。
Python支持多种编程范型,如函数式、指令式、结构化、面向对象和反射式编程。
Python解释器易于扩展,可以使用C或C++或其他可以通过C调用的语言扩展新的功能和数据类型。
Python编写的程序不需要编译成二进制代码,可以直接从源代码运行程序,在计算机内部,Python解释器把源代码转换成字节码的中间形式,然后再把它翻译成计算机使用的机器语言并运行。
语法简洁而清晰,具有丰富和强大的类库,使用Python快速生成程序的原型,然后对其中有特别要求的部分,用更合适的语言改写,性能要求特别高,就可以用C/C++重写,而后封装为Python可以调用的扩展类库。
只有基础建牢固了,才会更利于我们以后的发展及进步,现如今Python的发展十分迅速,已经将C++语言甩在了后边,在不久的将来,可能会超过C和Java这些主流语言。
⑷ python中如何定义类
输入class ......(......处自己写):
然后在四个空格后面输入def ......(......)(建议加一个self)
⑸ python中类的组合与创建
在一个类里再嵌套多个类,叫做类的组合,组合类可以更加有条理的组合类的各种信息。
我们可以将每一个小类的构造的对象作为参数传入大类中,这样就可以通过使用 大类构造的对象.大类的属性.小类的属性 ,来访问每一个具体的属性。
我们以一台电脑为例,大类就是指计算机类其属性包含了小类:基本信息、硬件信息、操作系统信息、用户信息,而这些小类又包含了一系列具体的信息。如果我们想访问具体的属性,就需要通过组合类来实现;
这样就打印输出电脑基础信息中的品牌和型号。
computer_detail.py
computer.py
⑹ Python:编写一个Employee类
classEmployee:
firstName=''
def__init__(self,firstName,lastName,salary):
self.firstName=firstName
self.lastName=lastName
self.salary=salary
defgive_raise(self,increase=5000):
self.salary+=increase
defdisplayEmployee(self):
print("firstName:",self.firstName,",lastName:",self.lastName,",Salary:",self.salary)
defsetUp():
deftest_give_default_raise(emp):
emp.give_raise()
deftest_give_custom_raise(emp):
emp.give_raise(3000)
emp=Employee("William","Shakespeare",3000)
emp.displayEmployee()
test_give_default_raise(emp)
emp.displayEmployee()
test_give_custom_raise(emp)
emp.displayEmployee()
setUp()
⑺ python中如何定义类
一、类定义:
class <类名>:
<语句>
类实例化后,可以使用其属性,实际上,创建一个类之后,可以通过类名访问其属性
如果直接使用类名修改其属性,那么将直接影响到已经实例化的对象
类的私有属性:
__private_attrs两个下划线开头,声明该属性为私有,不能在类地外部被使用或直接访问
在类内部的方法中使用时self.__private_attrs
类的方法
在类地内部,使用def关键字可以为类定义一个方法,与一般函数定义不同,类方法必须包含参数self,且为第一个参数
私有的类方法
__private_method两个下划线开头,声明该方法为私有方法,不能在类地外部调用
在类的内部调用slef.__private_methods
类的专有方法:
__init__构造函数,在生成对象时调用
__del__析构函数,释放对象时使用
__repr__打印,转换
__setitem__按照索引赋值
__getitem__按照索引获取值
__len__获得长度
__cmp__比较运算
__call__函数调用
__add__加运算
__sub__减运算
__mul__乘运算
__div__除运算
__mod__求余运算
__pow__称方
示例:
[python]view plain
#类定义
classpeople:
⑻ Python-类的创建和使用
创建一个宠物 Pet 类,根据该类创建的每个实例都将存储名字和物种,赋予每个宠物吃饭(eat())和睡觉(sleep())的能力:
根据类创建实例
调用方法
给上面的例子进行补充,设置一个宠物到家的初始时间默认值为 0,对某个属性设定默认值可以不提供形参。
调用一下read_time()
增加一个 update_time() 的方法,指定初始时间
调用
新增一个 increment_time() 方法,表示较初始值而言增加的时间
调用
一个类继承另一个类时,它将自动获得另一个类的所有属性和方法;原有的类称为父类,而新类称为子类。子类继承了其父类的所有属性和方法,同时还可以定义自己的属性和方法。
创建一个 Cat 类,继承 Pet 的属性,同时可以定义 Cat 特有的属性。
调用
如果子类中的某些属性与父类不一样,可以在子类新建方法重新定义来改写父类。
类的导入和函数的导入相同。
⑼ Python元类编程 之 new、init、call
这是一个普通的类对象,其中
类对象之于实例对象,正如元类对象之于类对象,他们之间的关系是完全相同的
我们同样可以推断出
我们不妨根据其作用来推断
我们在metaclass的init处打断点,便可以看到num:10在参数当中
当然我们也可以手动定义类对象,就像创建实例那样简单
如果按类推,DemoMeta()是调用元类的 __ call __() 。
没错,是这样,按理来说这是个无限的循环,当然实际上python解释器不会允许这样的情况。
唯一的不同是,有些动作,python帮我们自行实现了。例如定义类时,会自动执行元类的实例化。
⑽ Python写一个类,能将任意多条记录性数据写入二进制文件,能自动读出任意一条记录并解码为原始消息
importrandom
classWRB(object):
defWrite(self,Text):
withopen(r'a.text','ab')asf:
f.write((Text+' ').encode('utf-8'))
print((Text+' ').encode('utf-8'))
defRead(self):
withopen('a.text','rb')asf:
text=f.readlines()
a=random.sample(text,1)
print(a[0].decode('utf-8').strip(' '))
test=WRB()
test.Write('测试')
test.Write('测试数据2测试数据2测试数据2测试数2')
test.Read()