2016-12-13 12 views
-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) 

편집 :

지금까지이 (대화 형 세션에) 실행하려면 코드입니다 그러나 나는 또한이 같은 것을 시도

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() 

하지만 단일 개체에서만 작동합니다.

+0

* * 여기서 오류가 발생합니까? 전체 추적을 보여라. –

+0

@DanielRoseman 전체 추적에 대한 편집 – dya

+0

하지만 이전 질문과 정확히 같습니다. 거기에 분명히 대답했듯이, 당신은'schedule'리스트를 반복 할 필요가 있습니다. –

답변

0
def __init__(self, model): 
     self.famsize = famsize 
     self.distance = distance 
     self.update_need = None 

올바르게 보이지 않습니다. 매개 변수로 famsize 및 distance를 전달하지 않습니다.