1
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)

印刷:

bambino.counter is self.counter ? True
bambino.counter is self.counter ? False
bambi1.counter: 8
bambino.counter: 7

我知道通过做self.counter += 1 counter成为实例的属性而不是类的属性。

但是为什么bambi1.counter要取它的初始值bambino.counter呢?

4

1 回答 1

5

如果在对象中找不到属性,则在层次结构中向上查找,首先在其类中查找,如果未找到,则在超类中查找。

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

PS:请把你的班级名字大写。

于 2013-02-02T12:34:50.837 回答