分类目录:《系统学习Python》总目录
对于通过名称显式调用的方法,文章《系统学习Python——装饰器:“私有“和“公有“属性案例-[使用伪私有、破坏私有和装饰器权衡]》中的示例在Python2.X和Python3.X下都能如期工作。然而和大多数软件一样,总是会有改进的余地。最为显著的是,如果这一工具被客户端类使用的话,对于运算符重载方法它将拥有混合性能。
正如编写的那样,当在Python2.X下运行时,代理类是一个经典类,但是当在Python3.X下运行时,代理类是一个新式类。同样地,在Python2.X中代码支持任何客户端类,但是在Python3.X中代码不能够验证或委托由内置操作隐式分发的运算符重载方法,除非它们在代理中被重新定义。不使用运算符重载的客户端是被完整支持的,但是其他的客户端在Python3.X中可能需要额外的代码。
重要的是,这不是一个新式类的问题,而是一个Python版本问题一一同样的代码只在Python3.X中运行得不同并失败。因为被包装对象的类的本质是与代理无关的,所以我们只考虑代理自己的代码,它在Python2.X下运行,而不是Python3.X。
参考文献:
[1] Mark Lutz. Python学习手册[M]. 机械工业出版社, 2018.