@ @ staticmethod可以被继承吗?
这个问题就是这样说的。 我有一个抽象类在辅助函数中调用静态方法,我希望子类只需定义静态方法并使用它运行。
也许我可以沿着getattr的方式使用某些东西? 我应该使用@classmethod吗?
像这样的东西:
class A(object):
def func(self):
self.f()
class B(A):
@staticmethod
def f():
print "I'm B"
测试:
>>> a=x.A()
>>> a.func()
Traceback (most recent call last):
File "<interactive input>", line 1, in <module>
File "x.py", line 3, in func
self.f()
AttributeError: 'A' object has no attribute 'f'
>>> b=x.B()
>>> b.func()
I'm B
A
不能独立工作,并且有一个调用静态方法的帮助函数。 B
定义了静态方法。 这工作,如果我明白你想要什么正确的... ...
是的,如果你使用self
来调用方法,或者使用cls
方法,它会起作用。
尽管如此,我肯定会建议使用classmethod来代替。 这将允许实现查看类属性,并且如果最终得到多级继承,它可以使中间类更容易做出正确的事情。
我不知道你的方法实际上在做什么,所以在实践中,classmethod可能不会为你购买任何东西。 它几乎不需要使用,所以你也可以养成它的习惯。
链接地址: http://www.djcxy.com/p/9191.html