2012-01-15 13 views
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を装飾してみました。しかし、私はサブクラス化するたびにそれを装飾する必要があります。

+0

これはそれが動作する方法です。あなたは、あなたが望む動作を得るためにメタクラスで恐ろしいハックを作ることができますが、私はそれを強く勧めます。 – interjay

答えて

4

これはあなたがそれを行う方法です。他のプログラミング言語では、いつでもstaticキーワードを使用する必要があります。

関連する問題