Python实例属性从类属性获取具有相同名称的初始值?

Per*_*nce 1 python attributes class

class bambino(object):
    counter = 7
    def __init__(self):
        print("bambino.counter is self.counter ?", bambino.counter is self.counter)
        self.counter += 1
        print("bambino.counter is self.counter ?", bambino.counter is self.counter)

bambi1 = bambino()
print ("bambi1.counter:", bambi1.counter)
print ("bambino.counter:", bambino.counter)
Run Code Online (Sandbox Code Playgroud)

打印:

bambino.counter is self.counter ? True
bambino.counter is self.counter ? False
bambi1.counter: 8
bambino.counter: 7
Run Code Online (Sandbox Code Playgroud)

我明白通过做self.counter += 1 反击成为不属于类的实例的属性.

但为什么bambi1.counter从它的初始价值bambino.counter

Pav*_*sov 5

如果在对象中找不到属性,则在层次结构中查找更高的属性,首先在其类中查找,然后,如果未找到,则在超类中查找.

self.counter += 1相当于self.counter = self.counter + 1.所以要分配bambi1.counter,Python首先需要获取值bambi1.counter.由于bambi1最初没有counter,python没有找到它,必须在它的类中查找它.

PS:请将您的班级名称大写.