32 lines
718 B
Python
32 lines
718 B
Python
# portfolio.py
|
|
|
|
class Portfolio:
|
|
def __init__(self, holdings):
|
|
self._holdings = holdings
|
|
|
|
def __iter__(self):
|
|
return self._holdings.__iter__()
|
|
|
|
def __len__(self):
|
|
return len(self._holdings)
|
|
|
|
def __getitem__(self, index):
|
|
return self._holdings[index]
|
|
|
|
def __contains__(self, name):
|
|
return any(s.name == name for s in self._holdings)
|
|
|
|
@property
|
|
def total_cost(self):
|
|
return sum(s.shares * s.price for s in self._holdings)
|
|
|
|
def tabulate_shares(self):
|
|
from collections import Counter
|
|
total_shares = Counter()
|
|
for s in self._holdings:
|
|
total_shares[s.name] += s.shares
|
|
return total_shares
|
|
|
|
|
|
|