[Python-de] Überladen von Methoden

Stefan Schwarzer sschwarzer at sschwarzer.net
Don Feb 17 00:18:42 CET 2005


Hallo Christian,

On Wednesday 16 February 2005 19:47, Christian Helmbold wrote:
> wie ich gerade mit Entsetzen feststellen musste, kann man in Python
> gar keine Methoden überladen! Wie umgeht man diese Schwäche am
> elegantesten?

wie andere schon geschrieben haben, ist es in der Praxis normalerweise 
kein Problem.

> Übergebt ihr einfach None, wenn ein Parameter leer 
> ist? Bei normalen Methoden könnte man ja noch auf zwei Methoden mit
> unterschiedlichen Namen ausweichen, aber spätestens bei einem
> Constructor geht das nicht mehr.

Mirko hatte die Übergabe einer Liste vorgeschlagen. Eine Variante ist 
die Übergabe mittels *args und **kwargs:

def methode(self, *args, **kwargs):
    # args ist eine Liste, kwargs ein Dictionary, aber der Aufrufer
    # muss keine Liste oder ein Dictionary übergeben, sondern kann
    # beliebige Positions- (positional arguments) oder
    # Schlüsselwort-Argumente (keyword arguments) verwenden
    ...

Aber auch das ist nur selten eine elegante Lösung.

Erkläre uns bitte die Situation, in der du das Überladen von Methoden 
vermisst. Wahrscheinlich gibt es eine einfache Problemlösung in 
Python, die ohne das Überladen auskommt. Wir versuchen, die dann zu 
finden. :-)

Viele Grüße
Stefan