#python
#python
Вопрос:
У меня есть карта классов (упрощенная):
from Enums import *
import Globals
import Tile
class Map:
tiles = [] #the actual map, it's a 2D list of Tile objects
for x in range(Globals.mapWidth):
for y in range(Globals.mapHeight):
self.tiles[x][y].addItem(Items.Foliage)
И плитка класса:
class Tile:
items=[]
def __init__(self, type):
self.type = type
def addItem(self,i):
self.items.append(i)
Моя проблема в том, что массив items[] из плитки класса, похоже, является общим для каждого экземпляра класса. Например, в конце циклов FOR
print(len(self.tiles[x][y].items)
верните 25 для каждого тайла. Почему это так? У меня должно быть 25 списков размером 1, но вместо этого размер списка в цикле увеличивается с 0 до 25. Может кто-нибудь объяснить мне, что здесь происходит? Большое спасибо за помощь 🙂
Ответ №1:
Your items
является атрибутом класса, поэтому он, по-видимому, является общим для всех экземпляров.
class Tile:
def __init__(self, type):
self.items = []
self.type = type
Комментарии:
1. Это сработало, спасибо! Я приму ваш ответ, когда веб-сайт позволит мне
2. Скажите, пока вы здесь, как я могу проверить, возвращает ли list.index() ошибку? Я не могу найти это в Google.
3. @gramm, используй попытку / исключение docs.python.org/tutorial/errors.html#handling-exceptions
4. @gramm:
try: my_list.index(x); except ValueError: handle_error()