2012-01-15 132 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关键字。