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