[Python-de] Überladen von Methoden

Ulrich Berning ulrich.berning at desys.de
Don Feb 17 08:43:50 CET 2005


Andreas Pakulat schrieb:

>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.
>
>Andreas
>
>  
>
Seit Einführung der New Style Classes (Python-2.2) gibt es sehr wohl 
echte Konstruktoren: __new__(cls, ...)
Siehe: http://www.python.org/2.2.3/descrintro.html#__new__

Ulli



-------------- nächster Teil --------------
Ein Dateianhang mit HTML-Daten wurde abgetrennt...
URL: http://starship.python.net/pipermail/python-de/attachments/20050217/170ca16e/attachment.htm