Python – как получить список самопеременных в классе состоит из N-self

Отредактировано:

Я хочу создать N-число агентов. У каждого агента будет имя, поэтому я создаю случайное имя из имен и назначу его агенту класса.

После запуска модели я хочу получить список имен моих агентов.

Это от mesa:

import names from mesa import Agent, Model from mesa.time import RandomActivation class Agent(Agent): def __init__(self, name): self.name= names.get_full_name() self.wealth = 1 def step(self): pass class Model(Model): def __init__(self, N): self.num_agents = N self.schedule = RandomActivation(self) for i in range(N): a = MoneyAgent(i) self.schedule.add(a) def step(self): self.schedule.step() 

на интерактивной сессии

 gow = MoneyModel(10) gow.step() atr = list([a for a in MoneyAgent.name]) print(atr) 

Я получил эту ошибку:

Файл "C: \ src__init __. Py", строка 7, в atr = list ([a для a в MoneyAgent.name]) AttributeError: тип объекта 'MoneyAgent' не имеет атрибута 'name'

Как это исправить?

Вот моя интерпретация вашей проблемы: вы создаете объект MoneyModel который содержит коллекцию объектов MoneyAgent хранящихся в подобном коллекции объекте, называемом MoneyModel.schedule , и вы хотите, чтобы list name каждого объекта MoneyAgent в вашем Коллекция MoneyModel.schedule .

Предполагая, что MoneyModel.schedule ведет себя как итерируемый объект, должно работать следующее:

 atr = [agent.name for agent in gow.schedule]