python类的__setattr__()怎么用

試著忘記壹切 提交于 2019-12-03 04:24:07

参考: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'}

 学习了。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!