Skip to main content
idego
Python & Entwicklung

Wir müssen über Protokolle in Python sprechen

Von Idego Group

Wir müssen über Protokolle in Python sprechen

Python hat sich erheblich weiterentwickelt und Entwickler benötigen moderne Werkzeuge. Die Sprache bietet jetzt Protokolle als gesunde Alternative zu Abstract Base Classes (ABC) und Vererbung. Dieses Feature adressiert strukturelle Typisierung durch Duck Typing — das Prinzip, dass wenn etwas wie eine Ente geht und wie eine Ente quakt, dann muss es eine Ente sein.

Der Artikel demonstriert dies anhand eines „Heim-Zoo"-Beispiels. Traditionelle Abstract Base Classes erfordern explizite Vererbungsbeziehungen. Wenn Sie eine implementierte Methode aus einer Kind-Klasse mit ABCs entfernen, schlägt die Instanziierung sofort fehl. Protokolle verzögern jedoch die Typprüfung bis zur Laufzeit, wenn Methoden tatsächlich aufgerufen werden.

Der wesentliche Unterschied: ABCs verwenden nominale Typisierung (vererbungsbasiert), während Protokolle strukturelle Typisierung (schnittstellenbasiert) einsetzen. Dieser Unterschied ändert grundlegend, wie Kopplung funktioniert. Klassen, die ein Protokoll implementieren, müssen nicht davon erben, was Abhängigkeiten in der gesamten Codebasis reduziert.

Ein wesentlicher Vorteil betrifft die Schnittstellentrennung. Anstatt Funktionen zu zwingen, ganze Objekte mit vielen Methoden zu akzeptieren, ermöglichen es Protokolle Entwicklern, dedizierte Schnittstellen nur für bestimmte Funktionen zu definieren. Dies entspricht den SOLID-Prinzipien, indem sichergestellt wird, dass Code nur von der notwendigen Funktionalität abhängt.

Der Artikel erkennt Kompromisse an. Protokolle opfern explizite Klassenhierarchien — Dokumentation wird weniger offensichtlich, wenn Beziehungen nicht durch Vererbung deklariert werden. Wenn die Instanzerstellung vorrangig ist, bleiben ABCs die überlegene Wahl, da sie Kompilierungszeitverifizierung bieten.

Die Schlussfolgerung betont, dass Protokolle bei der Instanznutzung durch Duck Typing hervorragend sind und Kopplung reduzieren, während sie eine flexiblere, elegantere Code-Organisation ermöglichen.

Verwandte Artikel