Ich habe beim Definieren einer Funktion in einer Klasse einen Fehler gemacht, ändert jedoch nicht, wie der Code während der Laufzeit funktioniert.Python-Klasse ändert globale Variable, ohne sie global zu deklarieren
Der Fehler, den ich machte, war eine globale Variable zu verwenden, wenn ich eine instanzierte Variable verwenden möchte.
Was war ich zu schreiben bedeutete:
self._map_data[screen_pos_layer][y][x] = selected_material
Stattdessen schrieb ich:
map_data[screen_pos_layer][y][x] = selected_material
jedoch die beabsichtigte Funktionalität (die Farbe einer LED) ändert sich nicht, egal Wenn es sich um die instanzierte Variable oder die globale Variable handelt. Die Funktion, die die Farbe tatsächlich in die LED schreibt, ist in einer anderen Klasse.
Ich dachte, das könnte nur passieren, wenn ich global <variable>
einschließe? Ich habe sehr wenig Erfahrung mit Python, aber ich bin sicher, das war richtig.
class Tools(object):
def __init__(self, _map_data):
self._map_data = _map_data
def paint(self, event):
if selected_tool == select_paint and selected_color != -1:
for j in range(cursor_size_y):
for i in range(cursor_size_x):
y = screen_pos_y + cursor_pos_y + j
x = screen_pos_x + cursor_pos_x + i
map_data[screen_pos_layer][y][x] = selected_material
else:
return
moveCursor(event)
tools = Tools(map_data)
# this is a Tkinter object
window.bind_all("<Control-Up>", tools.paint)
Ich habe versucht, für diese Suche, aber ich kann nur Beiträge über die Menschen wollen, verwenden, um eine globale Variable in einer Klasse finden, ich versuche nicht speziell auf.
Sie sind einfach falsch. Wenn in Python kein Name im lokalen Gültigkeitsbereich gefunden wird, werden Globals überprüft. –