Я пытаюсь поэкспериментировать с объектами - мне нужен объект, который может подсчитать количество экземпляров.Странный подсчет объектов в Python
Мой код:
class Location:
count = 0
def __init__(self, column, row):
self.column = column
self.row = row
self.num = Location.count
Location.count += 1
def position(self):
print("Col: %i, Row: %i, Instance: %i" % (self.column, self.row, self.num))
# set up grid
grid = [[0]*5]*5
# Create objects in all positions
for i in range(0, len(grid)):
for j in range(0, len(grid[i])):
grid[i][j] = Location(i, j)
grid[i][j].position() #prints correctly
for i in range(0, len(grid)):
for j in range(0, len(grid[i])):
grid[i][j].position() #prints incorrectly -- WHY?!?!
Почему при печати содержимого сетки во второй раз, показывают полностью неправильные данные?
Я по существу создаю сетку экземпляров класса объектов. Я муравей, чтобы иметь возможность отслеживать количество экземпляров в этом объекте.
Этот код не предназначен ни для чего, в частности - только для моего собственного удовольствия и обучения!
редактировать ** ВЫХОДА КОДА:
Col: 0, Row: 0, Instance: 0
Col: 0, Row: 1, Instance: 1
Col: 0, Row: 2, Instance: 2
Col: 0, Row: 3, Instance: 3
Col: 0, Row: 4, Instance: 4
Col: 1, Row: 0, Instance: 5
Col: 1, Row: 1, Instance: 6
Col: 1, Row: 2, Instance: 7
Col: 1, Row: 3, Instance: 8
Col: 1, Row: 4, Instance: 9
Col: 2, Row: 0, Instance: 10
Col: 2, Row: 1, Instance: 11
Col: 2, Row: 2, Instance: 12
Col: 2, Row: 3, Instance: 13
Col: 2, Row: 4, Instance: 14
Col: 3, Row: 0, Instance: 15
Col: 3, Row: 1, Instance: 16
Col: 3, Row: 2, Instance: 17
Col: 3, Row: 3, Instance: 18
Col: 3, Row: 4, Instance: 19
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Col: 4, Row: 0, Instance: 20
Col: 4, Row: 1, Instance: 21
Col: 4, Row: 2, Instance: 22
Col: 4, Row: 3, Instance: 23
Col: 4, Row: 4, Instance: 24
Благодаря
Никогда не наносите умножение на список списков, за исключением того, вы полностью знаете, чего ожидать –
Пожалуйста, покажите нам выход. Компьютерный выход не является «неправильным». Вы ошибаетесь, думая, что это «неправильно». Об этом. – pltrdy
Да - я согласен с тем, что компьютер печатает то, что я ему скажу, чтобы печатать. > _ < –