Скажем, у меня есть класс под названием A, и я хочу перечислить все объекты, созданные из этого конкретного класса. Это то, что я сделал до сих пор, и он поднимает AttributeError: type object 'A' has no attribute 'items'
Как это сделать?Автоматически добавлять вновь созданные объекты в список
class A:
def __init__(self):
self.items = []
self.items.append(self)
@classmethod
def list_objects(cls):
return cls.items
a = A()
b = A()
print(A.list_objects())
# Expected output is [a,b]
'self.items 'является атрибутом экземпляра. Переместите его в тело класса. –
Обратите внимание, что сохранение экземпляров в списке таким образом приведет к сбою мусора, т. Е. Они не собираются собирать мусор, если вы не удалите их из списка вручную. Рассмотрите возможность использования [WeakSet] (https://docs.python.org/2/library/weakref.html#weakref.WeakSet), если заказ не является проблемой. –
Ответ на этот вопрос, поэтому я просто хочу добавить, что это обычно не очень хорошая идея, потому что он вводит глобальное состояние, что делает повторное использование и тестирование труднее. – BlackJack