1

サブクラスがその親の静的メソッドを呼び出すことができるかどうか疑問に思っていたので、それをテストしました。期待どおりに動作します!

class A(object):
    @classmethod
    def static(cls):
    print('act on '+cls.__name__)

class B(A):
    def foo(self):
        print('foo()')

>>> B.static()
act on B

そのテクニックを使用する際に注意すべき落とし穴があるかどうかを知りたかった...

何かアドバイス?

4

1 に答える 1

1

あなたが呼んでいるのはclassmethod、 ではなく、親のstaticmethodです。

とにかく、どちらも問題なく、サブクラスで呼び出すのが一般的です。

Aのをオーバーライドする場合classmethodでも、 using をB参照できます。A.staticsuper(B, cls).static

于 2013-05-23T01:43:37.657 に答える