This Stack Overflow answer states that for the program:
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()
Output will be:
$ python Main.py 
7
7
That answer then compares it to a similar program in Java:
The reason is because Java's
int ideclaration inChildclass makes theibecome class scope variable, while no such variable shadowing in Python subclassing. If you removeint iinChildclass of Java, it will print 7 and 7 too.
What does variable shadowing mean in this case?