python类的__setattr__()怎么用

参考:https://www.cnblogs.com/huchong/p/8287799.html

1.重写了setattr方法后进行赋值

class ClassA(object):
    def __init__(self, classname):
        self.classname = classname

    def __setattr__(self, name, value):
        # self.name = value  # 如果还这样调用会出现无限递归的情况
        #self[name]=value
        object.__setattr__(self,name,value)#如果自定义了__setattr__函数,那么需要这样子赋值
        print('invoke __setattr__')

insA = ClassA('a') # __init__中的self.classname调用__setattr__。
# invoke __setattr__

print(insA.__dict__)
# {}

insA.tag = 'insA'    
# invoke __setattr__

print(insA.__dict__)
# {}

输出:

invoke __setattr__
{'classname': 'a'}
invoke __setattr__
{'classname': 'a', 'tag': 'insA'}

 学习了。

原文地址:https://www.cnblogs.com/BlueBlueSea/p/11776985.html