[Python-de] Überladen von Methoden

tanzer at swing.co.at tanzer at swing.co.at
Don Feb 17 08:26:46 CET 2005


Andreas Pakulat <apaku at gmx.de> wrote:

> On 16.Feb 2005 - 19:47:54, 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?
> > Übergebt ihr einfach None, wenn ein Parameter leer ist? Bei normalen
> > Methoden könnte man ja noch auf zwei Methoden mit unterschiedlichen Namen
> > ausweichen,
> 
> Neben den anderen Antworten, die alle korrekt sind, möchte ich dich
> noch auf etwas hinweisen (was auch ich erst nach einiger Zeit mit
> Python mitbekommen habe):
> 
> > aber spätestens bei einem Constructor geht das nicht mehr. 
> 
> Es gibt keine Konstruktoren in Python, die __init__ Methode ist kein
> Konstruktor, sondern sie erzeugt z.B. Instanzvariablen. Ein
> Konstruktor in C++ oder Java ist etwas das aus dem Nichts eine Instanz
> erzeugt, wie man aber an der Signatur von _init__ sehen kann
> ( __init__(*self*): ) existiert die Instanz beim Aufruf der Funktion
> schon.

Und überdires kann man mittels Class Methods verschiedene
Konstruktoren (mit verschiedenen Parameterlisten) implementieren,
wenn das wirklich notwendig ist.

-- 
Christian Tanzer                                    http://www.c-tanzer.at/