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;
实例变量就是一份复制,不会互相影响。

posted @ 2019-07-12 00:45  枫林晚月  阅读(2498)  评论(0编辑  收藏  举报