Wie man diese Unterklasse der abstrakten Klasse durchsetzen sollte, sollte eine bestimmte innere Klasse in Python definiPython

Python-Programme
Guest
 Wie man diese Unterklasse der abstrakten Klasse durchsetzen sollte, sollte eine bestimmte innere Klasse in Python defini

Post by Guest »

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>

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)
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.

Code: Select all

class AbstractClass:
class ClassEnum(Enum):
pass

def run(self):
...
, aber dies erhöht keinen Fehler, wenn die Unterklasse ihre eigene Version von classenum nicht definiert. Wir konnten versuchen < /p>

Code: Select all

class AbstractClass:
class ClassEnum(Enum):
raise NotImplementedError

def run(self):
...
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.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post