-1
私のプログラムにはメサを使用しています。モデルクラスを実行しようとしていますが、エージェントクラスからAttributeErrorを取得しました。Python - メサ:各オブジェクトのインスタンス変数を取得する方法
これは私のスクリプトです:
class ComtrModel (Model):
""" A model with some number of Agents"""
def __init__(self,N):
self.num_agents = N
self.schedule = RandomActivation(self)
for i in range (N):
a = CommuterAgent(i)
self.schedule.add(a)
class CommuterAgent (Agent):
def __init__(self, model):
self.famsize = famsize
self.distance = distance
self.update_need = None
def step(self):
if self.distance >= 10000:
self.update_need = self.update_need()
return
def update_need (self, famsize):
if self.famsize :
self.famsize = famsize
return
prob_need()
各エージェントの変数を取得する方法は?私はそれがモデルが適切に実行されることを確認するためにチェックする必要があります。
from src.ComtrModel import *
model = ComtrModel(5)
for i in range (10):
model.step()
for key, value in CommuterAgent.step(model):
print(key, value)
EDIT:
今のところ、これは(インタラクティブセッションで)実行するための私のコードですが、それは、私はまた、このような何か試してみました
Traceback (most recent call last):
File "C:src/__init__.py", line 3, in <module>
from src.ComtrModel import *
File "C:\src\__init__.py", line 9, in <module>
for key, value in CommuterAgent.step(model):
File "C:\src\ComtrModel.py", line 40, in step
if self.distance >= 10000:
AttributeError: 'ComtrModel' object has no attribute 'distance'
を返します。
>>> hi_obj = hi()
>>> hi_obj.__dict__.keys()
を
しかし、それは単一のオブジェクトのためだけに働きます
*ここで*はエラーを発生させますか?完全なトレースバックを表示します。 –
@DanielRoseman完全なトレースバックの編集 – dya
これは以前の質問とまったく同じです。そこに明確に答えられているように、あなたは 'schedule'リストを反復する必要があります。 –