Является ли хорошей практикой создание атрибута класса (списка), который содержит все экземпляры класса?
Есть ли у него плохие побочные эффекты, о которых мне следует подумать?
class Car:
cars = []
def __init__(self, color):
self.color = color
__class__.cars.append(self)
def delete(self):
__class__.cars.remove(self)
@classmethod
def by_color(cls, color):
for car in cls.cars:
if car.color == color:
return car
def __repr__(self):
return str(self)
def __str__(self):
return '{} Car'.format(self.color)
car1 = Car('green')
car2 = Car('blue')
car3 = Car('red')
print(Car.cars) # [green Car, blue Car, red Car]
car3.delete()
print(Car.cars) # [green Car, blue Car]