* Teil der typing-Library * ermöglicht es anzugeben welche Parameter-Kombinationen möglich sind, in dem die Funktionsdeklaration mehrfach angeben werden kann mit verschiedenen Parametern * ermöglicht es %%*%%*kwargs in der eigentlichen Methoden zu nutzen, aber trotzdem mögliche Parameter zu listen, inkl. Typ * macht kein eigentlichen Overloading * man hat also nicht abhängig von den übergebenen Parametern verschiedene Methoden (um das zu realisieren siehe [[python:singledispatch]] * statt dessen kann man verschiedene Parameter-Konstellationen beschreiben mit der die Methode aufgerufen werden kann (es wird aber letztendlich immer die gleiche Methode ausgeführt) ========== Mehrere Parameter-Kombinationen ========== from typing import overload @overload def bla(eins:str, zwei:str):... @overload def bla(kaiser:str):... def bla(kaiser=None, eins=None, zwei=None): print(kaiser, eins, zwei) bla(kaiser="Hallo") Obiges Beispiel definiert eine Methode "bla" mit 3 Keyword-Argumenten. \\ Praktisch soll aber nur entweder "Kaiser" oder ("eins" und "zwei") setzbar sein, aber nicht alle 3 gleichzeitig. \\ Das wird erreicht in dem man mehrere Deklarationen mit @overload-Dekorator schreibt, nur diese definieren dann mit welchen Parametern die Methode dann jeweils aufgerufen werden kann (die Deklaration bei der Methodendefinition ist nicht sichtbar). \\ \\ **Hinweis:** Keyword-Argumente können scheinbar nur noch als Keyword-Argumente benutzt werden, nicht mehr als positional Arguments. ====== kwargs und vorgegebene Parameter ====== * normalerweise ist es nicht möglich bei der Nutzung von %%*%%*kwargs oder *args Hinting einzubauen welche Parameter möglich sind from typing import overload @overload def bla(eins:str, zwei:str):... def bla(**kwargs): print(eins, zwei) bla(kaiser="Hallo") In obigem Beispiel benutzt die eigentliche Methode kwargs und hat damit alle Parameter als Dictionary zur Verfügung. \\ Gleichzeitig gibt es aber Hinting welche Keyword-Parameter möglich sind und welchen Typ sie haben -> das erfolgt per @upload-Dekorator und der darauf folgenden Deklaration.