2016-07-19 4 views
0

Ich habe ein Hauptscript und ich importiere ein anderes Modul mit einer Klasse darin. Wenn ich die Klasse instanziiere, ist eines der Argumente y und daher habe ich ein self.y = y in der __init__ Methode. Jetzt ist das Problem, dass ich im Hauptskript eine for Schleife habe, die den y Wert ändert und die Methode 'live_plotting' von derselben Klasse aufruft. Normalerweise muss ich den Wert y erneut als Argument übergeben und innerhalb der Methode self.y = y haben. Dies ist nicht nett, gibt es eine Möglichkeit, self.y über Module zu aktualisieren, ohne als Argument erneut übergeben zu müssen? Ich dachte über Zeiger, aber anscheinend ist alles ein Zeiger in Python. Kann jemand eine alternative Lösung anbieten?Wie aktualisiere ich einen Variablenwert über Module Python?

+0

Wir haben gewonnen Ich kann Ihnen mit einer so vagen Frage nicht helfen. Geben Sie den Code an, den Sie bisher geschrieben haben, Ihre erwartete Eingabe und Ausgabe und eine Beschreibung, warum sie nicht funktioniert. –

+0

@BenjaminHodgson Ich kann den gesamten Code nicht bieten, weil es zu viel. Die Grundstruktur ist da und ich stelle eine Frage bezüglich der Aktualisierung von Variablen über Module hinweg, nicht über meinen Code. – marjak

+0

Auch der Code erfordert Kenntnisse von Matplotlib, also würde ein normaler Programmierer es nicht verstehen. Ich stelle also eine allgemeine Frage zu Modulen. – marjak

Antwort

2

Ich bin nicht wirklich sicher, ob es das ist, was Sie wollen, aber nach meinem Verständnis möchten Sie den Wert von self.y ohne eine Methode aktualisieren?

Dies würde durch die Ausführung

object_name.y = new_value 

geschehen, wo object_name der Name Sie die Instanz der Klasse gab, ist, wie selbst sehen in der __init__ deklarierten Variablen Attribute, die dieser Instanz der Klasse gehören .

0

Von was ich verstehe, Mutator ist nicht das, was Sie suchen. Ein Mutator ist eine Funktion innerhalb einer Klasse, die auf ein Attribut zugreift und dessen Wert ändert.

Ich denke, in Ihrem Code möchten Sie y als wenn self.y und y wo miteinander verknüpft verwenden. Aber wenn Sie y als Argument für eine Funktion geben, dann self.y = y die y in der Funktion ist eine Kopie der y Sie als Argument übergeben. dann self.y = y nehmen Sie den Wert der kopierten y und speichern Sie es in self.y.

Nach Instanziierung Ihr Objekt:

my_instance = class(x,y) 
#if you want to modify my_instance.y 
my_instance.y = value 

oder mit einem Mutator in der Klasse:

def set_y(self,value): 
    self.y=value 

dann in der Haupt, wenn Sie y ändern möchten:

my_instance.set_y(value) 
Verwandte Themen