[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