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)
我尝试

搜索这个,但我只能找到关于人们想要在类中使用全局变量的帖子,我特别尝试不要这样做。

显然,您的代码之前已经创建了一个全局map_data变量,因此您显示的代码不是重新创建map_data变量,它只是修改现有变量的一个元素。 现有变量是通过常规名称查找找到的,因此在这种情况下,它是在全局上下文中找到的。

相关内容

  • 没有找到相关文章

最新更新