【发布时间】:2018-03-30 09:36:13
【问题描述】:
这里有一个小示例代码:
class A:
staticvar=3;
def foo2(self):
print("------ Foo2")
print("static: "+str(A.staticvar));
print("instance: "+ str(self.staticvar));
class B(A):
def setStaticVar(self, num):
B.staticvar=num;
a=A();
b=B();
a.staticvar=7;
a.foo2();
b.setStaticVar(100);
a.foo2();
b.foo2();
结果:
------
static: 3
instance: 7 -->correct. Instance var modified
------
static: 3
instance: 7 --> Not correct. Why static var is not 100
------
static: 3
instance: 100 --> Correct, but this value should be shared between A and B
为什么会这样?静态变量不应该在 A 和 B 之间共享吗?为什么在b中通过b修改。
从这个例子看来,每个类都有自己的静态变量(在我看来并不是真正的静态变量,因为只有一个静态变量,我们有 2 个,每个类一个)。
谁能解释这种行为?
干杯。
【问题讨论】:
标签: python-3.x inheritance static-variables