python中名称修饰与描述符
名称修饰 java和C#等其他高级语言中都有private关键字来修饰一个属性或字段是私有的,但是python中并没有private,而是有个与它接近的概念旧式名称修饰。每当在一个属性前面加上__前缀,解释器就会立刻将其重命名: 直接访问会抛异常 利用dir函数查看内部属性 python内部会把__前缀的属性重命名为【_类名+属性名】;因此在python中如果一个属性不是共有的就约定使用双下划线__为前缀,它不会调用任何名称修饰的算法,只是说名这个属性是该类的私有属性。 幸运的是python中还有其他机制类构建类的私有和共有代码,即使用描述符和property这些POP设计的关键特性 什么是描述符 python描述符是一个“绑定行为”的对象属性,在描述符协议中,它可以通过方法重写属性的访问。这些方法有 __ get__(), __ set__(), 和__delete__()。如果这些方法中的任何一个被定义在一个对象中,这个对象就是一个描述符 它是一个类,定义了另一个类的访问方式,即一个类可以将属性管理托管给另一个类 描述符协议 描述符类基于3个特殊方法,这3个方法组成了描述符协议 __ set__(self,obj,type=none)设置属性时调用,也称为setter __ get__(self,obj,value) 读取属性时调用,也称为getter __ delete__