在实践中理解继承。实例的打印值

Understanding inheritance in practice. Printing values of an instance

我有一个 class 的特工,使用 __str__ 方法。 我有一个 class 的 Family(Agents)Family 被构造为以代理 ID 为键的字典。 将代理分配给家庭后,我遍历 my_families: 当我打印 members.keys() 时,我得到了正确的密钥。 当我打印 members.values() 时,我得到一个实例列表

但是,我无法访问实例内部的值本身。 当我尝试使用方法 get_money() 时,我得到的答案是 Family class 没有该方法。有帮助吗?

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

谢谢

提供更多信息。 家庭 class

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 个代理商

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

如果Family应该包含Agent对象,为什么它继承自Agent?无论如何,您从未在 Family class 的 __init__ 中初始化父 Agent 对象,并且根据您的编辑,get_money 方法包含在 Agent class,所以 Family 对象没有 get_money 方法。要访问它,您需要首先访问 Family 对象的 members 字典,然后使用键访问所需的 Agent 对象,然后访问该对象的 get_money 方法。