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)

Мәселе мынада, сынып [] элементтерінің жиынтығы [] массасы сыныптың әр сәттілігімен бөлісіледі. Мысалы, FOR шлюздерінің соңында,     басып шығару (len (self.tiles [x] [y] .items) әрбір плитка үшін 25 мәнін қайтарады. Неге бұлай? Менде 1 өлшемдегі 25 тізім бар, бірақ оның орнына тізімді мөлшерін циклде басып шығару 0-ден 25-ге дейін өседі. Біреу маған мұнда не болып жатқанын түсіндіре ала ма? Көмектесуге көп рахмет :)

0

1 жауаптар

Сіздің элементтері - бұл сынып төлсипаты, сондықтан ол барлық даналар арасында ортақ болып көрінеді.

class Tile:
    def __init__(self, type):
        self.items = []
        self.type = type
2
қосылды
қосылды автор John La Rooy, көзі
@gramm: try: my_list.index (x); ValueError басқа: handle_error()
қосылды автор Sven Marnach, көзі
Бұл жұмыс істеді, рахмет! Веб-сайт маған рұқсат берген кезде сіздің жауапыңызды қабылдаймын
қосылды автор gramm, көзі
Бұл жерде болғанда айтыңыз, егер list.index() қатені қайтарса, қалай тексеруге болады? Мен оны Google арқылы таба алмаймын.
қосылды автор gramm, көзі