Generics done

This commit is contained in:
Eden Kirin
2023-02-16 13:00:04 +01:00
parent e1d3226056
commit 5caef41e80
4 changed files with 40 additions and 14 deletions

View File

@ -23,10 +23,16 @@ def main():
] ]
) )
user = employees.get_user_by_id(id=2) employee = employees.get_user_by_id(id=2)
print("Found user:", user) 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") cocacola_partners = partners.get_by_company(company="CocaCola")
print("CocaCola partners:")
for partner in cocacola_partners: for partner in cocacola_partners:
print(partner) print(partner)

View File

View File

@ -8,15 +8,6 @@ from lib.gen_2 import (
def main(): 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( employees = EmployeeContainer(
[ [
Employee(id=1, first_name="Pero", last_name="Perić", department="Dev"), 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"), Employee(id=3, first_name="Ivo", last_name="Ivić", department="Sales"),
] ]
) )
employees[0]
partners = PartnerContainer( partners = PartnerContainer(
[ [
@ -33,12 +23,17 @@ def main():
Partner(id=103, first_name="Mate", last_name="Matić", company="Pepsi"), Partner(id=103, first_name="Mate", last_name="Matić", company="Pepsi"),
] ]
) )
partners[0]
employee = employees.get_user_by_id(id=2) 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") cocacola_partners = partners.get_by_company(company="CocaCola")
print("CocaCola partners:")
for partner in cocacola_partners: for partner in cocacola_partners:
print(partner) print(partner)

25
generics_registry.py Normal file
View File

@ -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)