Как создать динамический список объектов класса? - PullRequest
0 голосов
/ 11 ноября 2018

При попытке добавить новый элемент в мой список объектов класса cells я заметил, что все значения списка являются последним значением добавленного элемента. Я использую append для добавления новых предметов. Как я могу получить правильный ответ?

class cells:
  x=0

from cells import cells
a=[]

a.append(hucre)
a[0].x=10

a.append(hucre)
a[1].x=20

a.append(hucre)
a[2].x=30

print(a[0].x) #30 where must give me 10
print(a[1].x) #30 where must give me 20
print(a[2].x) #30 where must give me 10

Ответы [ 2 ]

0 голосов
/ 11 ноября 2018

Вы должны создать новые элементы класса cells, не меняя атрибут cells класса cells.x.

Таким образом, вы должны определить __init__ метод для класса cells (подробнее о __init__: ссылка , ссылка ):

class cells:
    def __init__(self, x=None):  # default value of x is None
        self.x = x


hucre = cells()  # instantiating new cells object
print(hucre.x)

Out: 
None

Добавление значений в список:

a = []   
a.append(hucre)
a[0].x = 10
print(a[0].x)

Out: 
10

Создайте новый объект, иначе вы измените первый объект:

hucre = cells(20)
a.append(hucre) # here .x is 20 already so you need no assignment 
print(a[1].x)

Out: 
20

... и так далее. Вы можете добавлять объекты, созданные в паренсе:

a.append(cells(30))
print(a[2].x)

Out: 
30
0 голосов
/ 11 ноября 2018

Это потому, что в вашем классе вы определили x внутри тела класса, а не его метод __init__. Это делает его переменной класса, одинаковой для всех экземпляров класса, согласно документации .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...