次のコードを考えてみましょう:クラス継承
class A(object):
a = []
@classmethod
def eat(cls, func):
print "called", func
cls.a.append(func)
class B(A):
@A.eat
def apple(self, x):
print x
A.eat(lambda x: x + 1)
print A.a
出力: called <function apple at 0x1048fba28> called <function <lambda> at 0x1048fbaa0> [<function apple at 0x1048fba28>, <function <lambda> at 0x1048fbaa0>]
私たちはさえobject.Howをここで追加取得2
機能している作成されていないようA.a
が空になることが期待まさに何? eat
が2
回と呼ばれるようになっていますか?
クラスのすべてのステートメントは、クラスをロードするときに実行されます。 'クラスA:print( 'hello')'は、クラスをロードするときに "hello"を出力します。クラス '' print A.a'がなくても、最初の2つの出力を取得しても '@ A.eat'と' A.eat() 'の両方が実行されます。 – AChampion