Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:变量范围和列表的封装_Python - Fatal编程技术网

Python:变量范围和列表的封装

Python:变量范围和列表的封装,python,Python,我有一张班级地图(简化): 和一个类平铺: class Tile: items=[] def __init__(self, type): self.type = type def addItem(self,i): self.items.append(i) 我的问题是类平铺中的items[]数组似乎在类的每个实例中共享。例如,在For循环的末尾, 打印(len(self.tiles[x][y]。项) 为每个磁贴返回25。为什么会这样?我应

我有一张班级地图(简化):

和一个类平铺:

class Tile:
    items=[]
    def __init__(self, type):
        self.type = type

    def addItem(self,i):
        self.items.append(i)
我的问题是类平铺中的items[]数组似乎在类的每个实例中共享。例如,在For循环的末尾, 打印(len(self.tiles[x][y]。项)
为每个磁贴返回25。为什么会这样?我应该有25个大小为1的列表,但是在循环中打印列表的大小会从0增加到25。有人能解释一下这里发生了什么吗?非常感谢您的帮助:)

您的
是一个类属性,这就是为什么它似乎在所有实例之间共享的原因

class Tile:
    def __init__(self, type):
        self.items = []
        self.type = type

这很有效,谢谢!如果网站允许,我会接受你的答案。当你在这里时,我如何测试list.index()是否返回错误?我在谷歌上找不到这个。@gramm,使用try/except@gramm:
try:my_list.index(x);ValueError除外:handle_error()
class Tile:
    def __init__(self, type):
        self.items = []
        self.type = type