diff --git a/generics_1.py b/generics_1.py index 2b93f1f..61aa617 100644 --- a/generics_1.py +++ b/generics_1.py @@ -23,10 +23,16 @@ def main(): ] ) - user = employees.get_user_by_id(id=2) - print("Found user:", user) + employee = employees.get_user_by_id(id=2) + print("Found employee:", employee) + + developers = employees.get_by_department("Dev") + print("Developers:") + for employee in developers: + print(employee) cocacola_partners = partners.get_by_company(company="CocaCola") + print("CocaCola partners:") for partner in cocacola_partners: print(partner) diff --git a/generics_1_lib.py b/generics_1_lib.py deleted file mode 100644 index e69de29..0000000 diff --git a/generics_2.py b/generics_2.py index 42b742a..1e5e548 100644 --- a/generics_2.py +++ b/generics_2.py @@ -8,15 +8,6 @@ from lib.gen_2 import ( def main(): - users = UserContainer[Employee]( - [ - Employee(id=1, first_name="Pero", last_name="Perić", department="Dev"), - Employee(id=2, first_name="Mirko", last_name="Mirković", department="Dev"), - Employee(id=3, first_name="Ivo", last_name="Ivić", department="Sales"), - ] - ) - users[0] - employees = EmployeeContainer( [ Employee(id=1, first_name="Pero", last_name="Perić", department="Dev"), @@ -24,7 +15,6 @@ def main(): Employee(id=3, first_name="Ivo", last_name="Ivić", department="Sales"), ] ) - employees[0] partners = PartnerContainer( [ @@ -33,12 +23,17 @@ def main(): Partner(id=103, first_name="Mate", last_name="Matić", company="Pepsi"), ] ) - partners[0] employee = employees.get_user_by_id(id=2) - print("Found user:", employee) + print("Found employee:", employee) + + developers = employees.get_by_department("Dev") + print("Developers:") + for employee in developers: + print(employee) cocacola_partners = partners.get_by_company(company="CocaCola") + print("CocaCola partners:") for partner in cocacola_partners: print(partner) diff --git a/generics_registry.py b/generics_registry.py new file mode 100644 index 0000000..8b46d69 --- /dev/null +++ b/generics_registry.py @@ -0,0 +1,25 @@ +from typing import Dict, Generic, TypeVar + + +T = TypeVar("T") + + +class Registry(Generic[T]): + def __init__(self) -> None: + self._store: Dict[str, T] = {} + + def set_item(self, key: str, value: T) -> None: + self._store[key] = value + + def get_item(self, key: str) -> T: + return self._store[key] + + +if __name__ == "__main__": + family_name_reg = Registry[str]() + family_age_reg = Registry[int]() + + family_name_reg.set_item("husband", "steve") + family_name_reg.set_item("dad", "john") + + family_age_reg.set_item("steve", 30)