@property装饰器
把一个方法变成属性调用
好处是方便调用
1 | class Student(object): |
只使用@property而不不对该函数setter方法,表示定义为只读属性
1 | class Screen(object): |
多重继承
使用方法
1 | class Animal(object): |
MixIn多重继承
因为python允许使用多重继承,所以MixIn为常见写法
定制类
iter
实现iter()方法让类可以在for..in循环中使用
该方法返回一个迭代对象,然后python的for循环会不断调用该迭代对象的next()方法拿到循环的下一个值,直到遇到stopIteration错误时退出循环。
getitem
把实例当作list,可按照下标取出元素
1 | class Fib(object): |
但是list中可用的切片方法,在这种情况下不可行,原因是getitem() 传入的参数可能是int也可能是一个切片对象,所以要实现切片,需要做判断.
1 | class Fib(object): |
getattr
动态返回一个属性
当调用不存在的属性时,python会试图从getattr(self,属性值)中获取属性
1 | class Chain(object): |
call
只要定义一个 call()方法,就可以直接对类中的实例进行调用
1 | class foo(object): |