1._slots_
限制类实例添加的属性信息
2.@property
广泛应用在类的定义中,可以让调用者写出简短的代码,同时保证对参数进行必要的检查,这样,程序运行时就减少了出错的可能性。
如:
class Screen(object): @property def width(self): return self.width @width.setter def width(self,value): self.width=value @property def height(self): return self._height @height.setter def height(self,value): self.height = value @property def solution(self): return self.height*self.width
3.多重继承
MixIn的目的就是给一个类增加多个功能,这样,在设计类的时候,我们优先考虑通过多重继承来组合多个MixIn的功能,而不是设计多层次的复杂的继承关系。
4.定制类
_str_:返回用户看到的字符串,_repr_返回程序开发者看到的字符串
_iter_:如果一个类想被用于for ... in
循环,类似list或tuple那样,就必须实现一个__iter__()
方法,该方法返回一个迭代对象,然后,Python的for循环就会不断调用该迭代对象的__next__()
方法拿到循环的下一个值,直到遇到StopIteration
错误时退出循环。
_getiter_:实现像list按下标取元素,需要实现该方法;list的切片方法fib直接使用会报错,原因是__getitem__()
传入的参数可能是一个int,也可能是一个切片对象slice
,所以要做判断
_getatter_:当调用类或属性不存在时,我们用该方法,动态返回一个属性
_call_:任何类,只需要定义一个__call__()
方法,就可以直接对实例进行调用。
5.枚举类型
6.使用元类