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