#!/usr/bin/python3
# ====================================================================
# from: www.youtube.com/watch?v=y1ZWQQEe5PM
# 5 Useful Dunder Methods In Python
# ====================================================================
from dataclasses import dataclass
# ---- class definitions ---------------------------------------------
@dataclass(kw_only=True)
class Fruit:
name: str
grams: float
class Basket:
def __init__(self,*, fruits: list[Fruit]) -> None:
self.fruits = fruits
def __getitem__(self,item: str) -> list[Fruit]:
return [fruit for fruit in self.fruits if fruit.name.lower() == item]
# --------------------------------------------------------------------
# ---- main
# --------------------------------------------------------------------
def main() -> None:
fruits: list[Fruit] = [Fruit(name="Apple",grams=2500),
Fruit(name="Apple",grams=50),
Fruit(name="Orange",grams=1000),
Fruit(name="Orange",grams=9001),
Fruit(name="Banana",grams=1500)]
basket: Basket = Basket(fruits=fruits)
matches: list[Friut] = basket['apple']
print(f'matches: {matches}')
print(f'totals: {len(matches)}')
# --------------------------------------------------------------------
# ---- main
# --------------------------------------------------------------------
if __name__ == '__main__':
main()