Найти - Пользователи
Полная версия: Список созданных объектов определенного класса
Начало » Python для новичков » Список созданных объектов определенного класса
1
gavr-s
Добрый день! Такая ситуация. Есть определенный класс/классы и множество объектов данных классов
Собственно, Каким образом можно узнать список имен созданных объектов определенного класса? Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.
Пример:
 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]

Где Creature_List - список объектов и
Num_Creature_List - длина этого списка
AD0DE412
 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>
py.user.next
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>]
>>>
Не знаю, нужно ли тебе всё это усваивать. Ведь не зная обыкновенного базового синтаксиса питона, мало что можно сделать, используя продвинутый синтаксис. А в объектно-ориентированной парадигме программирования можно сделать ещё меньше, когда не знаешь структурную парадигму программирования совсем.
doza_and
gavr-s
Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.

Я бы еще добавил что в питоне вообще никто не занимается удалением объектов. Если исчезли ссылки на них то они сами со временем удалятся. Те должен быть контейнер в которм они хранятся. А Если он есть то вопрос с их поиском в принципе не возникнет.

Т.е. вы вообще както неправильно архитектуру приложения представляете.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB