learn.T 发表于 2022-6-14 15:29:30

__set__和__setattr__的区别和使用场景

__set__和__setattr__的区别和使用场景,可以用实例介绍一下吗?感觉两个有点相像,希望能够有明白的人总结一下区别,如果有参考来源,希望注明,谢谢

森亦简 发表于 2022-6-14 15:29:31

class AAA :
   
    def __init__(self,value,name):
      self.name = value
      
    def __setattr__(self,name, value):      ##对定义类AAA中属性的修改做出的反应
      print("__setattr__正在被调用")

    def __set__(self,instance,value):       ##对生成实例中属性修改做出的反应
      print("__set__正在被调用")
      
class Instance:
   
    x = AAA(10, 'x')


>>> a = Instance()
>>> a.x = 1
__set__正在被调用
>>> b = AAA(1,"x2")
__setattr__正在被调用
>>> b.x2 = 2
__setattr__正在被调用
>>>

我的理解是:
__setattr__是用于定义类的内部
__set__是用于定义类所创建的实例的

页: [1]
查看完整版本: __set__和__setattr__的区别和使用场景