#!/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()