class A(object): def __init__(self,name='Wang'): # 此处的赋值其实是触发了__setattr__ self.name = name # 当对象调用一个不存在的属性,才会触发 def __getattr__(self, item): self.con = item # 添加和修改属性会触发此方法 def __setattr__(self, key, value): self.__dict__[key] = value # 不能用下面的方法,因为self.key本身就调用了__setattr__方法,然后无限递归报错 # self.key = value a = A() # 新建一个属性并赋值,调用__setattr__方法 a.hello = 'Hi' print(a.hello) # 调用一个不存在的属性,调用__getattr__方法 a.world print(a.con)