[gelöst] Kopieren eines Objekts - Wie geht das??

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

[gelöst] Kopieren eines Objekts - Wie geht das??

Beitragvon antaeus » Freitag 2. Februar 2007, 12:00

Jetzt programmiere ich "schon" ein halbes Jahr in Python aber über dieses Problem bin ich erst heute morgen gestolpert:

Ich muss eine Kopie eines Objekts anfertigen. Die Kopie wird verändert und danach zerstört. Ziel ist, dass das ursprüngliche Objekt nicht verändert wird.

In C++ braucht man dazu den Copy Constructor. Wie geht das in Python? Ich suche jetzt schon den halben Morgen in meinem Buch, das schweigt beharrlich zu dem Thema und Tante Google spuckt nur Unbrauchbares aus!

Das Problem ist v.a., dass das Objekt, welches ich kopieren möchte, wiederum mehrere andere Objekte besitzt, die ebenfalls mitkopiert werden müssen. D:h. so etwas wie einen Copy Constructor zu schreiben (bzw. sind es in dem Falle ja eher mehrere Copy Constructors) wäre sehr viel arbeit. Kommt man da in Python irgendwie "drum rum"??

Wäre für eure Tipps sehr dankbar!
A.
Zuletzt geändert von antaeus am Freitag 2. Februar 2007, 12:07, insgesamt 1-mal geändert.
antaeus
User
Beiträge: 48
Registriert: Dienstag 19. September 2006, 10:10

Beitragvon antaeus » Freitag 2. Februar 2007, 12:06

Mist! Kaum postet man, findet man die Antwort selbst *gg*

Code: Alles auswählen

import copy

x = X()

y = copy.copy(x)
y2 = copy.deepcopy(x)


So einfach ist das. Ich liebe Python
Benutzeravatar
mitsuhiko
User
Beiträge: 1790
Registriert: Donnerstag 28. Oktober 2004, 16:33
Wohnort: Graz, Steiermark - Österreich
Kontaktdaten:

Beitragvon mitsuhiko » Freitag 2. Februar 2007, 18:38

antaeus hat geschrieben:Mist! Kaum postet man, findet man die Antwort selbst *gg*

Code: Alles auswählen

y = copy.copy(x)
y2 = copy.deepcopy(x)


Was du evtl. noch nicht gefunden hast: einen "Copy Konstruktor" kann man in Python nachbilden indem man __copy__ und/oder __deepcopy__ definiert. Je nach Verwendung steht es dir frei eine oder beide Methoden zu implementieren.
TUFKAB – the user formerly known as blackbird

Wer ist online?

Mitglieder in diesem Forum: dfint