クラス内で関数を定義するときにエラーが発生しましたが、実行時にコードの動作方法は変更されません。Pythonクラスがグローバル変数をグローバルに宣言せずにグローバル変数を変更しています
私が作成したエラーは、インスタンス変数を使用するときにグローバル変数を使用していました。私は書くことが何を意味するのか
だった:
self._map_data[screen_pos_layer][y][x] = selected_material
代わりに、私が書いた:
map_data[screen_pos_layer][y][x] = selected_material
しかし、目的の機能は、(LEDの色を変更)、どんなには変更されません。インスタンス化された変数またはグローバル変数の場合実際にLEDに色を書き込む機能は、別のクラスにあります。
私はglobal <variable>
を含めると発生する可能性がありますか?私はPythonでの経験はほとんどありませんが、これが正しいと確信しています。
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)
私は特にありませんしようとしています、私はこれを探してみましたが、私は唯一のクラスでグローバル変数を使用したい人についての記事を見つけることができます。
あなたは単に間違っています。 Pythonでは、ローカルスコープ内に名前が見つからない場合は、グローバルをチェックします。 –