2010-12-31 19 views
1

Ich habe 2 Klassen, die auf den gleichen Variablen arbeiten, aber die inverse voneinander tun. Gibt es eine Möglichkeit, die Variablen zwischen ihnen zu übertragen, ohne jeden Austausch hart zu codieren oder alle Werte in einem Array zu kombinieren? Die Kombination der Klassen ist keine Option.Übertragen von Variablen zwischen Klassen

#pseudocode 

class class1: 
    def __init___(self): 
     # code 
     initialize variable MAIN 

    # do stuff 
    # do stuff 
    make variable stuff 
    # do stuff 
    make variable thing 
    # do stuff 

class class2: 
    def __init___(self): 
     # code 
     initialize variable stuff 
     initialize variable thing 
    # do stuff 
    # do stuff 
    undo variable stuff 
    # do stuff 
    undo variable thing 
    # do stuff 
    make variable MAIN 

Ich möchte in der Lage sein, Daten schnell zwischen class1-class2 hin und her zu senden.

+0

Ein Beispiel von dem, was Sie sprechen, hilfreich sein könnte. "Tun die Inversen"? "Variablen übertragen"? –

+0

Ja, also mach es! Was hast du versucht, und warum hat das nicht funktioniert? –

+1

Es ist ziemlich unklar, was genau du meinst. Können Sie ein funktionierendes Beispiel veröffentlichen? – Falmarri

Antwort

2

Setzen Sie die gemeinsamen Daten in ein drittes Objekt und referenzieren Sie es aus beiden Klassen.

+0

Ich sagte ausdrücklich, dass das Einfügen der Daten in ein drittes Objekt nicht funktioniert. edit: naja, tut es, aber es ist überhaupt nicht elegant – calccrypto

+0

Nun, nein, das hast du nicht gesagt. :) Du hast gesagt, dass das * Kombinieren * nicht funktioniert hat. Andere Sache. –

+0

@calccrypto: "aber es ist überhaupt nicht elagant". Falsch. Es ist sehr elegant und löst all Ihre Probleme durch einfaches Refactoring. –

2

Ich denke, das ist viel einfacher als Sie denken. Hier sind einige Beispiele für das "Senden" von Daten zwischen zwei Klassen.

class class2(object): 
    def __init__(self, other): 
     self.other = other 

    def set_color(self, color): 
     self.color = color 
     # "Sending" to other class: 
     self.other.color = color 

    def set_smell(self, smell, associated_object): 
     self.smell = smell 
     associated_object.smell = smell 

Verwendung wie folgt aus:

>>> ob1 = class1() 
>>> ob2 = class2(ob1) 
>>> ob2.set_color("Blue") 
>>> ob1.color 
"Blue" 

>>> ob2.set_smell("Good", ob1) 
>>> ob1.smell 
"Good" 
+0

warte ... wie ist self.other.color zu ob1 gekommen? – calccrypto

+0

@calccrypto: Oups, ich falsch geschrieben. Fest. self.other * ist * ob1. –

+0

Und ich habe ein Minus auf diesem !? Hah, Leute sind lustig. (Es spielt keine Rolle, ich habe heute mein Ruflimit erreicht, also keine Punkte verloren.) –

Verwandte Themen