Форум сайта python.su
Добрый день! Такая ситуация. Есть определенный класс/классы и множество объектов данных классов
Собственно, Каким образом можно узнать список имен созданных объектов определенного класса? Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.
Пример:
class Creature: time = 10 c1=Creature() c2=Creature() print(Creature_List) #Сам список while True: for i in range(Num_Creature_List): #от 0 до длины списка(Num_Creature_List) Creature_List[i].time-- #Уменьшаем time на 1 для i-элемента if Creature_List[i].time < 0 : #Если time кончился, то удалить данный объект del Creature_List[i]
Офлайн
class Test: pass a = Test() b = Test() c = dict(globals()) for i in c: if str(c[i]).find("__main__.Test object") > 0: print(i, c[i])
a <__main__.Test object at 0x7f4500a6fbe0> b <__main__.Test object at 0x7f4500a6fcd0>
Отредактировано AD0DE412 (Янв. 28, 2022 05:43:51)
Офлайн
gavr-sВ питоне нет такой операцииCreature_List[i].time-- #Уменьшаем time на 1 для i-элемента
var--
gavr-sУ тебя в каждом объекте должен быть метод, который возвращает имя этого объекта.
Каким образом можно узнать список имен созданных объектов определенного класса? Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.
>>> class A: ... def __init__(self, name): ... self._name = name ... def name(self): ... return self._name ... >>> lst = [A('John'), A('Sam'), A('Emmy')] >>> print(lst) [<__main__.A object at 0x7fd50d66b828>, <__main__.A object at 0x7fd50d66b860>, <__main__.A object at 0x7fd50d66b898>] >>> >>> names = [i.name() for i in lst] >>> print(names) ['John', 'Sam', 'Emmy'] >>> >>> new_lst = [i for i in lst if i.name() != 'Sam'] >>> print(new_lst) [<__main__.A object at 0x7fd50d66b828>, <__main__.A object at 0x7fd50d66b898>] >>>
Отредактировано py.user.next (Янв. 28, 2022 10:23:00)
Офлайн
gavr-s
Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.
Отредактировано doza_and (Янв. 28, 2022 23:25:21)
Офлайн