class Portfolio: def __init__(self, accounts, savings): self.accounts = accounts self.savings = savings def total(self): total = 0 for acct in self.accounts: total += acct.value() return total def apply_expenses(self, expense): for acct in self.accounts: expense = acct.apply_expenses(expense) def apply_savings(self, period): for acct, savings in zip(self.accounts, self.savings): acct.apply_savings(savings.current_value(period)) def apply_return(self): for acct in self.accounts: acct.apply_return() def taxable_income(self): taxable = 0 for acct in self.accounts: taxable += acct.get_capital_income() # Eventually split into capital and ordinary income. return taxable