Список всех объектов класса
Требуется получить список всех ссылок на один класс (объекты Myclass могут находится в любых файлах; функция print_all находится в модуле, откуда импортируются классы)
Имеется класс и ссылки на него (a, b, c и 2 ссылки в arr, их и нужно получить)
class Myclass:
pass
a = Myclass()
b = Myclass()
c = Myclass()
arr = [Myclass(), Myclas()]
def print_all():
print(Myclass.__getall__())
выходные данные должны быть списком (можно кортеж, массив, главное чтобы можно было по элементам пробежаться):
[<__main__.Myclass object at 0x108a52e50>, <__main__.Myclass object at 0x108a52f10>, <__main__.Myclass object at 0x108a52fd0>, <__main__.Myclass object at 0x108a7e430>, <__main__.Myclass object at 0x108a7e400>]
Существует ли альтернатива вымышленной мною функции __getall__(как GetAllActorsOfClass в UE4) (возможно ли вообще впринципе получить список всех ссылок?)?
Ответы (1 шт):
Автор решения: Benku
→ Ссылка
Как-то так:
class A:
instances = []
def __init__(self):
self.__class__.instances.append(self)
@classmethod
def printInstances(cls):
for instance in cls.instances:
print(instance)
a = A()
b = A()
A.printInstances()
<__main__.A object at 0x6fffffd87cf8>
<__main__.A object at 0x6fffffd87d68>