Wie man diese Unterklasse der abstrakten Klasse durchsetzen sollte, sollte eine bestimmte innere Klasse in Python defini
Posted: 11 Feb 2025, 07:17
Ich habe eine abstrakte Klasse, aus der Unterklassen abgeleitet werden. Die konkreten Implementierungen sollten eine Enum -Klasse enthalten, die einen Satz benannter Konstanten enthält. < /P>
Dieser Code gibt tatsächlich das richtige Verhalten an, aber ich möchte, dass es eine Art Notation gibt (ähnlich wie beim NotimplementedError auf dem Abstract Speak () Methode), die angibt, dass der Autor der konkreten Klasse eine innere Enum -Klasse namens CLASSENUM definieren sollte. Es wird tatsächlich für die Run () -Methode benötigt.
, aber dies erhöht keinen Fehler, wenn die Unterklasse ihre eigene Version von classenum nicht definiert. Wir konnten versuchen < /p>
Aber dies wirft vorhersehbar einen Fehler auf, sobald die AbstractClass definiert istclass AbstractClass:
@property
def ClassEnum(self):
raise NotImplementedError
def run(self):
...
< /code>
Aber hier ist nicht klar, dass im Unterklassen CascasSenum tatsächlich eine Klasse sein sollte. Perhpas Dieser Ansatz mit einer gewissen Dokumentation könnte angemessen sein.
Code: Select all
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)
Code: Select all
class AbstractClass:
class ClassEnum(Enum):
pass
def run(self):
...
Code: Select all
class AbstractClass:
class ClassEnum(Enum):
raise NotImplementedError
def run(self):
...
@property
def ClassEnum(self):
raise NotImplementedError
def run(self):
...
< /code>
Aber hier ist nicht klar, dass im Unterklassen CascasSenum tatsächlich eine Klasse sein sollte. Perhpas Dieser Ansatz mit einer gewissen Dokumentation könnte angemessen sein.