3. Python Mixin (Mehrfachvererbung)
Was ist ein Mixin in Python?
Ein Mixin
- ist eine Klasse, welche Methodenimplementierungen zur Wiederverwendung durch mehrere verwandte, untergeordnete Klassen bereitstellt. Die Vererbung impliziert jedoch keine Ist-ein-Beziehung.
- definiert keinen neuen Typen. Daher ist es nicht zur direkten Instanziierung vorgesehen.
- bündelt eine Reihe von Methoden zur Wiederverwendung. Jedes Mixin sollte ein einziges spezifisches Verhalten haben und eng verwandte Methoden implementieren.
Python Mixin Beispiel
Zunächst wird die Klasse Person implementiert:
class Person:
def __init__(self, name):
self.name = name
Dann wird eine Klasse Employee definiert, die von Person erbt:
class Employee(Person):
def __init__(self, name, skills, dependents):
super().__init__(name)
self.skills = skills
self.dependents = dependents
Zuletzt wird eine neue Instanz von Employee erzeugt:
if __name__ == '__main__':
e = Employee(
name='John',
skills=['Python Programming''Project Management'],
dependents={'wife': 'Jane', 'children': ['Alice', 'Bob']}
)
Mehrerer Mixin Klassen kombinieren
Angenommen, Sie möchten das Employee Objekt zu JSON konvertieren. Dazu können Sie zunächst eine neue Mixin-Klasse definieren, die das Standardmodul json verwendet:
import json
class JsonMixin:
def to_json(self):
return json.dumps(self.__dict__)
Ergänzen Sie dann die Klasse Employee so, dass sie zusätzlich von JsonMixin erbt, wodurch die Methode to_json auf Employee verfügbar wird:
class Employee(JsonMixin, Person):
def __init__(self, name, skills, dependents):
super().__init__(name)
self.skills = skills
self.dependents = dependents
Im Folgenden wird eine neue Instanz der Klasse Employee erstellt und nach JSON konvertiert:
if __name__ == '__main__':
e = Employee(
name='John',
skills=['Python Programming''Project Management'],
dependents={'wife': 'Jane', 'children': ['Alice', 'Bob']}
)
print(e.to_json())
