在实践中理解继承。实例的打印值
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
方法。
我有一个 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
方法。