小编Wil*_*ill的帖子

什么是可变阴影?

/sf/answers/2636054641/指出该程序:

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()
Run Code Online (Sandbox Code Playgroud)

输出将是:

$ python Main.py 
7
7
Run Code Online (Sandbox Code Playgroud)

然后将该答案与 Java 中的类似程序进行比较:

原因是因为 Java 在 Child 类中的 int i 声明使 i 成为类范围变量,而在 Python 子类化中没有这样的变量阴影。如果在 Java 的 Child 类中删除 int i ,它也会打印 7 和 7 。

在这种情况下,变量阴影是什么意思?

python python-3.x

5
推荐指数
2
解决办法
3134
查看次数

标签 统计

python ×1

python-3.x ×1