It's because all your objects share one variable (without you realizing it)
At first glance, it seems like every object should start fresh, right? But in this case, count is a class variable, which means it’s shared by all instances of the class.
Every time you create a new
Counter(), you’re actually incrementing the same shared variable not something unique to each object.If your goal is to give each object its own value, define it like this instead
class Counter:
def __init__(self):
self.count = 1
Now, each instance has its own count, stored on the object itself . no sharing, no surprises.
