私は抽象基本クラスを持っています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
これは可能ですか?