Не могу понять почему реализовывается код по принципу паттерна "Монотонность"

Не могу понять, почему в аттрибут класса values я получаю аргументы сразу с 3 экземпляров.

class Vector:
    values = []
    
    def __init__ (self, *args):
        self.args = args
        for i in self.args:
            self.values.append(i)            
  
    def __str__ (self):
        if len(self.values) > 0:
            return str(self.values)
        else:
            return f"Vector is empty"

v1 = Vector (1, 11, 111)
v2 = Vector (2, 22, 222)
v3 = Vector (3, 33, 333, 3333)
print (v1)

В консоли получаем:
[1, 11, 111, 2, 22, 222, 3, 33, 333, 3333]

Ответы (1 шт):

Автор решения: strawdog

потому что вы объявляете список values для всего класса, а не для экземпляра. попробуйте так:

class Vector:
#    values = []
    
    def __init__ (self, *args):
        self.args = args
        self.values = []
        for i in self.args:
            self.values.append(i)            
  
    def __str__ (self):
        if len(self.values) > 0:
            return str(self.values)
        else:
            return f"Vector is empty"

v1 = Vector (1, 11, 111)
v2 = Vector (2, 22, 222)
v3 = Vector (3, 33, 333, 3333)
print(v1)

[1, 11, 111]

→ Ссылка