25 lines
680 B
Python
25 lines
680 B
Python
|
# stock.py
|
||
|
|
||
|
from structure import Structure
|
||
|
from validate import String, PositiveInteger, PositiveFloat
|
||
|
|
||
|
class Stock(Structure):
|
||
|
name = String('name')
|
||
|
shares = PositiveInteger('shares')
|
||
|
price = PositiveFloat('price')
|
||
|
|
||
|
@property
|
||
|
def cost(self):
|
||
|
return self.shares * self.price
|
||
|
|
||
|
def sell(self, nshares):
|
||
|
self.shares -= nshares
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
from reader import read_csv_as_instances
|
||
|
from tableformat import create_formatter, print_table
|
||
|
|
||
|
portfolio = read_csv_as_instances('../../Data/portfolio.csv', Stock)
|
||
|
formatter = create_formatter('text')
|
||
|
print_table(portfolio, ['name','shares','price'], formatter)
|