[Python-de] Überladen von Methoden
Holger Duerer
python-lists at duerer-sinclair.de
Don Feb 17 11:31:09 CET 2005
>>>>> "Andreas" == Andreas Pakulat <apaku at gmx.de> writes:
Andreas> On 16.Feb 2005 - 19:47:54, Christian Helmbold wrote:
[...]
>> aber spätestens bei einem Constructor geht das nicht mehr.
Andreas> Es gibt keine Konstruktoren in Python, die __init__
Andreas> Methode ist kein Konstruktor, sondern sie erzeugt
Andreas> z.B. Instanzvariablen.
Hmm. Es scheint hier einige Begriffsverwirrungen zu geben.
Für mich ist ein Constructor/Konstruktor ein Ding, das ein neu
erzeugtes Objekt initialisiert und (hoffentlich) in einen
wohldefinierten Zustand bringt (z.B. sicherstellt, daß alle
spezifizierten Invarianten gelten).
Andreas> Ein Konstruktor in C++ oder Java ist etwas das aus dem
Andreas> Nichts eine Instanz erzeugt,
Ich kann hier dank Unwissenheit nichts über Java sagen, aber in C++
erzeugt der Constructor/Konstruktor gar nix (außer Attributsinstanzen
etc.). Wenn der aufgerufen wird, ist das Objekt schon alloziert (sei
es auf dem Stack oder Heap).
Verwechselst Du hier etwas mit klassenspezifischen new/delete
Methoden?
(Wie andere schon richtig festgestellt haben, kann man solche via
Metaklassen auch in Python erstellen.)
Andreas> wie man aber an der Signatur von _init__ sehen kann (
Andreas> __init__(*self*): ) existiert die Instanz beim Aufruf der
Andreas> Funktion schon.
Und im C++-Constructor-Body is 'this' bekannt und darf benutzt
werden...
Holger