如何解决如何强制抽象类的子类应在Python中定义特定的内部类
我有一个抽象类,将从其派生子类。具体的实现应在其中包括一个Enum类,该类包含一组命名常量。
from enum import Enum
class AbstractClass:
def run(self)
print('the values are:')
for enum in ClassEnum:
print(enum.value)
self.speak()
def speak(self):
raise NotImplementedError
class ConcreteClassFirst(AbstractClass):
class ClassEnum(Enum):
RED = 0
GREEN = 1
BLUE = 2
def speak(self)
print('the colors are:')
for enum in ClassEnum:
print(enum.name)
class ConcreteClassSecond(AbstractClass):
class ClassEnum(Enum):
LION = 'scary'
ELEPHANT = 'big'
GIRAFFE = 'tall'
def speak(self)
print('the animals are:')
for enum in ClassEnum:
print(enum.name)
该代码实际上给出了正确的行为,但是我希望有某种表示法(类似于抽象NotImplementedError
方法上的speak()
),它指示具体类的作者应该定义一个名为Enum
的内部ClassEnum
类。实际上,run()
方法需要它。
有些想法应该有类似的东西
class AbstractClass:
class ClassEnum(Enum):
pass
def run(self):
...
,但是如果子类未定义自己的ClassEnum
版本,这不会引发错误。我们可以尝试
class AbstractClass:
class ClassEnum(Enum):
raise NotImplementedError
def run(self):
...
但是,一旦定义了AbstractClass
,这就会引发错误
我可以尝试
class AbstractClass:
@property
def ClassEnum(self):
raise NotImplementedError
def run(self):
...
但是这里还不清楚在子类ClassEnum中实际上是否应该是一个类。 Perhpas的这种方法以及一些文档可能是合适的。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。