4
staticメソッドをオーバーライドして静的に保つにはどうすればよいですか?Python - staticメソッドをオーバーライドする
In [6]: class Foo(object):
...: @staticmethod
...: def foo(a, b):
...: print a + b
...:
...:
In [7]: Foo.foo
Out[7]: <function foo at 0x86a1a74>
In [8]: class Bar(Foo):
...: def foo(a, b):
...: print a - b
...:
...:
In [9]: Bar.foo
Out[9]: <unbound method Bar.foo>
私はstaticmethodでBar's fooを装飾してみました。しかし、私はサブクラス化するたびにそれを装飾する必要があります。
これはそれが動作する方法です。あなたは、あなたが望む動作を得るためにメタクラスで恐ろしいハックを作ることができますが、私はそれを強く勧めます。 – interjay