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 カウンターを行うことで、クラスではなくインスタンスの属性になることを理解しています。

しかし、なぜbambi1.counterそれの初期値をから取ったのbambino.counterですか?

4

1 に答える 1

5

属性がオブジェクト内で見つからない場合は、上位の階層で検索され、最初にそのクラスで検索され、見つからない場合はスーパークラスで検索されます。

self.counter += 1と同等self.counter = self.counter + 1です。を割り当てるにはbambi1.counter、Python はまず の値を取得する必要がありますbambi1.counter。にbambi1は最初は がcounterないため、python はそれを見つけられず、そのクラスで検索する必要があります。

PS: クラス名は大文字にしてください。

于 2013-02-02T12:34:50.837 に答える