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)

 

posted @ 2024-06-23 14:53  朵朵奇fa  阅读(7)  评论(0编辑  收藏  举报