A quick review of named tuples (standad and typed) and dataclasses.
From the Data Science from Scratch book.
namedtuple
¶Similar to dictionaries but
from collections import namedtuple
import datetime
StockPrice = namedtuple('StockPrice', ['symbol', 'date', 'closing_price'])
type(StockPrice)
price = StockPrice('MSFT', datetime.date(2018, 12, 14), 106.03)
price
type(price)
price.symbol, price.date, price.closing_price
NamedTuple
¶Simlar to namedtuple
but
from typing import NamedTuple
class StockPrice(NamedTuple):
symbol: str
date: datetime.date
closing_price: float
def is_high_tech(self) -> bool:
return self.symbol in ['MSFT', 'GOOG', 'FB', 'AMZN', 'AAPL']
stockprice = StockPrice('MSFT', datetime.date(2019, 12, 14), 106.83)
stockprice
stockprice.is_high_tech()
StockPrice('TOOT', 12, 12).is_high_tech()
Similar to NamedTuple
but
from dataclasses import dataclass
@dataclass
class StockPrice2:
symbol: str
date: datetime.date
closing_price: float
def is_high_tech(self) -> bool:
return self.symbol in ['MSFT', 'GOOG', 'FB', 'AMZN', 'AAPL']
stockprice2 = StockPrice2('MSFt', datetime.date(2018, 12, 14), 106.03)
stockprice2
stockprice2.closing_price /= 2
stockprice2.closing_price
For NamedTuple
this does not work
stockprice.closing_price /= 2