2012-01-15 108 views
4

如何覆蓋靜態方法並保持靜態?Python - 覆蓋靜態方法

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> 

我試過用靜態方法裝飾Bar的foo,它工作。但是我每次分類時都必須裝飾它。

+0

這就是它的工作方式。你可以用元類進行一些可怕的攻擊來獲得你想要的行爲,但我強烈建議不要這樣做。 – interjay 2012-01-15 12:14:56

回答

4

這就是你應該如何去做的。在其他編程語言中,您也必須每次都使用static關鍵字。