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'}

 学习了。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM