python 類變量訪問相關



class a():
    aa = 1

能夠訪問到類變量的操作:
# 1.
a.aa
# 2.
aobj = a()
aobj.aa
# 3.
class b(a):
    pass
b.aa
# 4.
bobj = b()
bobj.aa

重新賦值:
a.aa = 2,影響所有
b.aa = 2, 影響bobj.aa
aobj或bobj, 只影響自己

結論:
實際上是一個向上溯源的過程。
例如bobj.aa,先找b有沒有實例變量self.aa;
沒有找到,則找超類有沒有實例變量self.aa;
沒有找到,則找b有沒有類變量b.aa;
沒有找到,則找超類有沒有類變量a.aa。
b.aa也是類似的過程,只不過只找類變量。
發生重新賦值a.aa = 2,bobj.aa向上溯源能夠繼承改變;
但一旦發生賦值bobj.aa = 3,相當於創建了實例變量self.aa;此后a.aa將不會影響bobj.aa;
實例不會影響類,aobj.aa = 4不會在類a中加一個定義的實例變量,故也不會影響bobj.aa;
實例變量就是一份復制,不會互相影響。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM