Asked By – 8steve8
What I want is this behavior:
class a: list =  x = a() y = a() x.list.append(1) y.list.append(2) x.list.append(3) y.list.append(4) print(x.list) # prints [1, 3] print(y.list) # prints [2, 4]
Of course, what really happens when I print is:
print(x.list) # prints [1, 2, 3, 4] print(y.list) # prints [1, 2, 3, 4]
Clearly they are sharing the data in class
a. How do I get separate instances to achieve the behavior I desire?
Now we will see solution for issue: How to avoid having class data shared among instances?
You want this:
class a: def __init__(self): self.list = 
Declaring the variables inside the class declaration makes them “class” members and not instance members. Declaring them inside the
__init__ method makes sure that a new instance of the members is created alongside every new instance of the object, which is the behavior you’re looking for.