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