python知识点范围:magic method魔术方法
- magic method魔术方法是前后有两个下划线的属性;
- 创建对象的方法def __new__(cls ),重写的话可能需要一个星号和两个星号的参数;
- 销毁对象用__del__(),由python回收机制调用;
- 对象之所以可以比较是因为有运算符魔术方法属性,只要能比较的都有的;
- 比较运算符__cmp__(self, other)【eq, lt, gt】
- 数字运算符__add__(self, other)【sub, mul, div】
- 逻辑运算符__or__(self, other)【and】
- python运行首先要经过ebal这个函数,它只能识别机器字符串,用__repr__这个魔术方法来转化;
- __str__, __unicode__方法也是返回字符串的,str是直接打印对象时调用的;
- __dir__可以控制调用dir()时要返回的内容;
- 大部分的内建方法都是有对应魔术方法的,我们自己可以多多总结;
- __setattr__每次设置时都会调用;
- __getattr__, getattribute__查询魔术方法,每次没访问到和访问时会调用;
- 设置和查询魔术方法要防止无限递归,容易出错;
- 递归1万次会报错;
- python本身没有访问控制,加了双下划线实际只是改了名字,我们仍然可以访问到;
- __delattr__删除时会访问到;
- python2里什么都不继承算是老式类,缺少一些功能;