描述符、property

描述符:将某种特殊类型的类的实例指派给另一个类的属性。

  此处特殊类型的要求,至少实现”__set__(self , instance , owner)“、”__get__(self , instance , value)“、”__del__(self , instance )“三个方法中的一个。

>>> class MyDecriptor:
    def __get__(self,instance,owner):
        print('getting...',self,instance,owner)
        
    def __set__(self,instacne,owner):
        print('setting...',self,instance,owner)
        
    def __delete__(self,instace):
        print('deleting...',self,instance)

>>> class Test:
    x = MyDecriptor()
>>>test.x
getting... <__main__.MyDecriptor object at 0x00000212DA0936D8> <__main__.Test object at 0x00000212DA0EABE0> <class '__main__.Test'>
>>> test.x = 'X-man'
setting... <__main__.MyDecriptor object at 0x00000223972236D8> <__main__.Test object at 0x00000223972234E0> X-man
>>> del test.x
deleting... <__main__.MyDecriptor object at 0x00000223972236D8> <__main__.Test object at 0x00000223972234E0>
>>> 

  test.x访问属性时,调用__get__方法,从结果可以看出,调用时传入的三个参数依次为 __main__.MyDecriptor object at 0x00000212DA0936D8,即描述符类本身的实例;第二个,<__main__.Test object at 0x00000212DA0EABE0>,Test类的实例,

第三个, <class '__main__.Test'>,类本身。

  另外 __set__、__delete__与之相类似。

猜你喜欢

转载自www.cnblogs.com/Chris-01/p/11235450.html