Home > Software design >  Python deque append issue
Python deque append issue

Time:10-29

I am trying to insert 2 items into the deque, each item will be having 2 points. Totally deque should contain 4 points. But it's appearing to be 8 points. Someone, please help me in avoiding these duplicate points to store in the item queue. Below is the code.

from collections import deque

class Data:
    Points = list()
    
class Point:
    Tag = ""
    
queue = deque()

item1 = Data()
item2 = Data()

point1 = Point()
point2 = Point()
point3 = Point()
point4 = Point()

point1.Tag = "point1"
point2.Tag = "point2"
point3.Tag = "point3"
point4.Tag = "point4"

item1.Points.append(point1)
item1.Points.append(point2)
item2.Points.append(point3)
item2.Points.append(point4)

queue.append(item1)
queue.append(item2)

for it in queue:
    for p in it.Points:
        print(p.Tag)

CodePudding user response:

class Data:
    Points = list()

Here, Points is a class attribute that is shared between instances! But you want it to be an instance attribute:

class Data:
    def __init__(self):
        self.Points = list()
        # self.Points = []
  • Related