Ich baue ein Projekt, bei dem die Daten global freigegeben werden müssen. Ich habe eine Klasse GlobalDataBase erstellt, um diese Daten zu behandeln, die wie in How do I avoid having class data shared among instances? und https://docs.python.org/2/tutorial/classes.html ist. Allerdings fand ich etwas seltsam für mich. Mein Code ist wie folgt:Gemeinsame Nutzung globaler Daten in Python
class GlobalDataBase:
a = []
def copy_to_a(self, value):
self.a = value
def assign_to_a(self, value):
for idx in range(0, len(value)):
self.a.append(value[idx])
def test_copy():
gb1 = GlobalDataBase()
gb1.copy_to_a([1,2])
print gb1.a
gb2 = GlobalDataBase()
print gb2.a
def test_assign():
gb1 = GlobalDataBase()
gb1.assign_to_a([1,2])
print gb1.a
gb2 = GlobalDataBase()
print gb2.a
Die Ausgabe von test_copy
ist
[1,2]
[]
Die Ausgabe von test_assign
ist
[1,2]
[1,2]
Das Ergebnis des zweiten Verfahrens ist das, was ich erwartet hatte. Aber ich konnte nicht verstehen, warum die erste Methode nicht funktioniert. Kann jemand den Unterschied zwischen diesen beiden Methoden erklären?
über Ihre 'assign_to_a' Methode: mehr pythonic wäre' Wert für Element zu schreiben: self.a.append (Element) '. – GingerPlusPlus