https://stackoverflow.com/a/37657923/8061009指出对于程序:
class Parent(object):
i = 5;
def __init__(self):
self.i = 5
def doStuff(self):
print(self.i)
class Child(Parent, object):
def __init__(self):
super(Child, self).__init__()
self.i = 7
class Main():
def main(self):
m = Child()
print(m.i) #print 7
m.doStuff() #print 7
m = Main()
m.main()
输出将是:
$ python Main.py
7
7
然后将该答案与 Java 中的类似程序进行比较:
原因是因为 Java 在 Child 类中的 int i 声明使 i 成为类范围变量,而在 Python 子类化中没有这样的变量阴影。如果在 Java 的 Child 类中删除 int i ,它也会打印 7 和 7 。
在这种情况下,变量阴影是什么意思?
忽然笑
繁星点点滴滴
慕无忌1623718
相关分类