2015-06-10 61 views
-1

我有一類代理,其工作方式爲__str__。 我有一班Family(Agents)Family被構造爲以代理ID爲關鍵字的字典。 將代理分配給系列之後,我重複執行my_families: 當我打印members.keys()時,我得到正確的密鑰。 當我打印members.values(),我得到一個實例列表在實踐中理解繼承。打印實例的值

但是,我不能訪問實例內的值本身。 當我嘗試使用方法get_money()時,我得到一個答案,即Family類沒有該方法。任何幫助?

for family in my_families: 
    print family.members.values() 

感謝

提供了更多的信息。 家庭類

class Family(agents.Agent): 
""" 
Class for a set of agents 
""" 
    def __init__(self, family_ID): 
     self.family_ID = family_ID 
     # _members stores agent set members in a dictionary keyed by ID 
     self.members = {} 

    def add_agent(self, agent): 
     "Adds a new agent to the set." 
     self.members[agent.get_ID()] = agent 

的代理類

class Agent(): 
    "Class for agent objects." 
    def __init__(self, ID, qualification, money): 
     # self._ID is unique ID number used to track each person agent. 
     self.ID = ID 
     self.qualification = qualification 
     self.money = money 

    def get_ID(self): 
     return self.ID 

    def get_qual(self): 
     return self.qualification 

    def get_money(self): 
     return self.money 

    def __str__(self): 
    return 'Agent Id: %d, Agent Balance: %d.2, Years of Study: %d ' (self.ID, self.money, self.qualification) 

#Allocating agents to families 

def allocate_to_family(agents, families): 
    dummy_agent_index = len(agents) 
    for family in families: 
     dummy_family_size = random.randrange(1, 5) 
     store = dummy_family_size 
     while dummy_family_size > 0 and dummy_agent_index >= 0 and (dummy_agent_index - dummy_family_size) > 0: 
      family.add_agent(agents[dummy_agent_index - dummy_family_size]) 
      dummy_family_size -= 1 
     dummy_agent_index -= store 

最後打印的例子,讓我的實例對象,但不是他們的價值觀

for family in my_families: 
    print family.members.values() 
+0

你也可以發佈家庭課程代碼嗎? – SuperBiasedMan

+0

您需要提供更多信息(即您的班級定義的最小工作示例),否則您的問題可能會被擱置。 –

+0

請提供更多信息,就像在一個最小工作示例之前所說的那樣,所以我們可以重現您的錯誤並測試如何解決它。 – Santiago

回答

1

如果Family應該包含Agent對象,爲什麼它是從Agent繼承嗎?無論如何,你永遠不會初始化的Family類的__init__Agent對象,並根據您的編輯get_money方法包含在Agent類,所以Family對象沒有一個get_money方法。要訪問該對象,首先需要訪問Family對象的members字典,然後使用一個鍵訪問所需的Agent對象,然後訪問該對象的get_money方法。

+0

就是這樣。我沒有再次簽署。而且我也沒有使用正確的密鑰迭代。現在沒問題。謝謝@ TigerhawkT3。我會投票,但是我在這個問題上失去了聲望:(對不起,我將來在解釋我的問題時會更加慷慨。 –