【发布时间】:2013-07-30 14:11:02
【问题描述】:
我确实有一个抽象基类A。这包括一个静态方法name。
然而,调用 name() 应该产生具体的子类它的名字
下面的例子说明了我的问题
from abc import ABCMeta, abstractmethod
class A(metaclass=ABCMeta):
_name = "A"
@staticmethod
def name():
return A._name # What to do here?
@abstractmethod
def foo(self):
pass
class B(A):
_name = "B" # Or how to override A._name?
def foo(self):
return "Foo"
class C(A):
_name = "C"
def foo(self):
return "Bar"
print(B().foo(), B.name()) # Should print: Foo, B
print(C().foo(), C.name()) # Shoudl print: Bar, C
这可能吗?
【问题讨论】:
标签: python inheritance static-members