Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 28, 2022 00:12:24

gavr-s
Зарегистрирован: 2022-01-27
Сообщения: 1
Репутация: +  0  -
Профиль   Отправить e-mail  

Список созданных объектов определенного класса

Добрый день! Такая ситуация. Есть определенный класс/классы и множество объектов данных классов
Собственно, Каким образом можно узнать список имен созданных объектов определенного класса? Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.
Пример:

 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 - длина этого списка

Офлайн

#2 Янв. 28, 2022 05:43:11

AD0DE412
Зарегистрирован: 2019-05-12
Сообщения: 1130
Репутация: +  44  -
Профиль   Отправить e-mail  

Список созданных объектов определенного класса

 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>



1. пжлст, форматируйте код, это в панели создания сообщений, выделите код и нажмите что то вроде
2. чтобы вставить изображение залейте его куда нибудь (например), нажмите и вставьте ссылку на его url

есчщо

Отредактировано AD0DE412 (Янв. 28, 2022 05:43:51)

Офлайн

#3 Янв. 28, 2022 10:19:43

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9730
Репутация: +  843  -
Профиль   Отправить e-mail  

Список созданных объектов определенного класса

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)

Офлайн

#4 Янв. 28, 2022 23:23:11

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  252  -
Профиль   Отправить e-mail  

Список созданных объектов определенного класса

gavr-s
Чтобы в дальнейшем, к примеру, удалить объект при некоторых условиях.

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

Т.е. вы вообще както неправильно архитектуру приложения представляете.



Отредактировано doza_and (Янв. 28, 2022 23:25:21)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version