Python学习手册——类的实例

纸上得来终觉浅,绝知此事要躬行!


Person——创建并处理关于人员的信息的一个类。

Manager——一个定制的Person,修改了继承的行为。

步骤1:创建实例

编写模块文件person.py,内含类Person:

# person.py(start)
class Person:

编写构造函数

赋给实例属性第一个值的通常方法是,在构造函数方法__init__中将它们付给self,构造函数方法包含了每次创建一个实例的时候Python会自动运行的代码。

class Person:
	def __init__(self,name,job = None,pay = 0):
		self.name = name
		self.job = job
		self.pay = pay

self就是新创建的实例对象,而name、job和pay变成了状态信息,保存在对象中(self.name = name 把本地的name赋给了self.name属性)供随后使用。

在进行中测试

Python编程是一种增量原型:编写——测试——增加——测试——…

__name__检查模块:直接运行当前模块时,执行__name__随后的语句;作为类库导入的时候则不会运行相应语句。

if __name__ == "__main__":
	#self-test code
	bob=Person("Bob Smith", "dev",pay = 1000)
	print(bob.name,bob.pay)

步骤2:添加行为方法

类的内部能够封装操作,删除冗余,优化维护,且可以应用于类的任何实例。

class Person:
    def __init__(self,name,job = None,pay = 0):
        pass
    def lastname(self):
        return self.name.split()[-1]
    def giveraise(self,percent):
        self.pay = int(self.pay * (1+percent))

步骤3:运算符重载

运算符重载:用类写成的对象,可以截获并响应用在内置类型上的运算:加法、切片、打印和点号运算等。构造函数__init__:用于初始化对象的状态;__str__:打印对象时调用;……

class Person:
    ……
    # add __str__ overload method for printing objects
    def __str__(self):
        return '[Person:{0},{1}]'.format(self.name,self.pay)

步骤4:通过子类定制行为

OOP有一个关键的概念:通过继承来定制化。超类/子类关系可以很好扩展,并完成继承行为,类可以继承、定制或扩展超类中已有的代码。定义Person的一个子类Manager,这里定义新的方法giveraise(),使用这种方式定义对代码维护由很重大的意义。

class Manager(Person):
    def giveraise(self,percent,bonus = .10):
        Person.giveraise(self,percent+bonus)

步骤5:定制构造函数

class Manager(Person):
    def __init__(self,name,pay):
        Person.__init__(self,name,'mgr',pay)
    pass

步骤6:使用内省工具

内置的instance.__class__属性提供了一个从实例到创建它的类的链接。类中也有__name__,__bases__,提供了超类的访问。

内置的object.__dict__属性提供了一个字典,每个属性附加到一个命名控件对象。

步骤7:把对象存储到数据库中

Pickle:任意Python对象和字节串之间的序列化;

bdm:实现一个可通过键访问的文件系统,以存储字符串;

shelve:使用另外两个模块按照键把Python对象存储到一个文件中

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值