Python- 如何获取 class 中的自变量列表,由 N-self 组成
Python- how to get list of self variables in a class consist of N-self
已编辑:
我想生成 N 个代理。每个代理都有一个名字,所以我从名称中创建一个随机名称并将其分配给 class 代理。
在我 运行 模型之后,我想获取我的代理名称列表。
这是来自台面:
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 for a in MoneyAgent.name])
AttributeError: 类型对象 'MoneyAgent' 没有属性 'name'
如何解决?
这是我对您的问题的解释:您正在创建一个 MoneyModel
对象,其中包含 MoneyAgent
个对象的集合,这些对象存储在称为 MoneyModel.schedule
的类集合对象中,并且您想要 MoneyModel.schedule
集合中每个 MoneyAgent
对象的 name
的 list
。
假设 MoneyModel.schedule
表现为一个可迭代对象,以下应该有效:
atr = [agent.name for agent in gow.schedule]
已编辑:
我想生成 N 个代理。每个代理都有一个名字,所以我从名称中创建一个随机名称并将其分配给 class 代理。
在我 运行 模型之后,我想获取我的代理名称列表。
这是来自台面:
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 for a in MoneyAgent.name]) AttributeError: 类型对象 'MoneyAgent' 没有属性 'name'
如何解决?
这是我对您的问题的解释:您正在创建一个 MoneyModel
对象,其中包含 MoneyAgent
个对象的集合,这些对象存储在称为 MoneyModel.schedule
的类集合对象中,并且您想要 MoneyModel.schedule
集合中每个 MoneyAgent
对象的 name
的 list
。
假设 MoneyModel.schedule
表现为一个可迭代对象,以下应该有效:
atr = [agent.name for agent in gow.schedule]