Es gibt mehrere Wege eine solche Klasse zu implementieren:
Metaklassen sind Klassen die andere Klassen erschaffen (also im Gegensatz zu normalen Klassen die Objekte erschaffen)
jede Klasse kann eine Base-Class (von der sie erbt) und eine Metaklasse (die sie erschafft) haben
eine Metaklasse wird auch aufgerufen wenn eine isinstance- oder issubclass-Methoden aufegrufen werden
Über abc
Klassen die das Interface definieren haben als Metaklasse abc.ABCMeta
Methoden die als abstrakte Methode definiert werden, benutzen einen der folgenden Dekoratoren
Properties die abstrakt sind werden mit dem @property- und anschließend mit dem @abc.abstractmethod
die Prüfung ob eine Klasse ein Interface implementiert erfolgt erst bei der Instanzierung der Klasse
Ob eine Methode die implementiert wird dann auch die gleichen Parameter implementiert wird nicht geprüft - einen Hinweis gibt es maximal durch die IDE
import abc
class MyMixedClass(metaclass=abc.ABCMeta):
def ausgabe(self):
print("Hallo aus MyMixdClass")
@abc.abstractmethod
def blubber(self, name):
pass
class MyImplementation(MyMixedClass):
def blubber(self, name):
print(f"Grüße aus Bubbler {name}")