我对一个我无法弄清楚的问题有点难倒,我觉得这应该是一个微不足道的问题。
我有一个班级预算的元素预算。在此类中,它有一个包含 Section 类对象的字典节。在章节类中,我有另一个字典,称为津贴类对象的津贴。在“津贴”类中,我有一个名为“操作”的列表,我想向其添加操作类对象。层次结构如下,对于那些更直观的:
预算 -> 款次 -> 津贴 -> 业务
我想将操作类对象附加到节和允许的特定组合(使用的变量name_of_section和name_of_operation。我的第一次尝试是
budget.sections[name_of_section].allowances[name_of_allowance].operations.append(Operation(name=name,
cost=cost, date=date)
由于某种未知的原因,它将操作对象添加到我的所有部分和允许元素,我无法弄清楚原因。我尝试将方法add_operation()添加到 Section,该方法使用add_operation()到“津贴”的方法,但它只是不断将每个操作添加到我的所有节和津贴元素中。
最奇怪的是,我在津贴中还有一个列表关键字,它意味着一个字符串列表。我稍后以完全相同的方式附加一个字符串:
budget.sections[name_of_section].allowances[name_of_allowance].keywords.append(keyword_str)
它只会增加适当的部分和津贴。有没有人知道为什么当我尝试将我的操作对象附加到列表中时,它会添加到所有列表中,尽管当我附加到str列表时,它只会添加到单个和适当的列表中?
这是我的预算初始化和添加津贴的方法,该津贴根据需要添加一个部分。
def __init__(self):
self.sections = {"Income": Section(name = "Income")}
self.total_balance = 0.0
self.unsorted_operations = []
def add_allowance(self, name, section, projected_cost = 0.0, frequency = "monthly"):
if section in self.sections:
self.sections[section].new_allowance(name=name, section=section, projected_cost = projected_cost,
frequency = frequency)
else:
self.add_section(name = section)
self.sections[section].new_allowance(name=name, section=section, projected_cost=projected_cost,
frequency=frequency)
我的 Section 类以这种方式初始化,_new_allowance()_ 方法是:
def __init__(self, name):
self.name = name
self.allowances = dict()
self.calculate_projected_cost()
def new_allowance(self, name, section, projected_cost, frequency = 'monthly'):
self.allowances[name] = Allowance(name = name, section = section, projected_cost = projected_cost,
frequency = frequency)
self.calculate_projected_cost()
明月笑刀无情
墨色风雨
相关分类