python的描述符(器)是如何工作的?
当一个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)