当一个class 中定义了__get__, __set__, __delete__三个函数中的任意一个,那么这个class就可以被成为描述符。当在python中使用点 . 来调用某个属性的时候,其load attr的顺序如下图所示。
关于描述符中instance 和owner的解释
class Name:def __get__(self, instance, owner):return "peter"def __set__(self, instance, value):print("this is set function")class f:name = Name()def __init__(self):pass# self.name = "alice" fobject = f() print(fobject.name) fobject.name = "tom" print(fobject.name)