我确实有一个抽象基类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
这可能吗?