dataclass_1.py 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. from dataclasses import dataclass, make_dataclass, is_dataclass, field
  2. from typing import List, Any
  3. @dataclass
  4. class Book:
  5. title: str
  6. author: str
  7. @dataclass
  8. class InventoryItem:
  9. name: str
  10. quantity: int = field(default=1)
  11. price: float = field(default=9.99)
  12. @dataclass
  13. class ProgramStaff:
  14. items: List[InventoryItem]
  15. # Или после python 3.10
  16. # items: list[InventoryItem]
  17. @dataclass
  18. class A:
  19. name: Any
  20. value: Any = 42
  21. # Создание класса через make_dataclass
  22. def test_1():
  23. Person = make_dataclass('Person', ['firs_name', 'last_name', 'age'])
  24. artem = Person('Artem', 'Egorov', 33)
  25. print(artem)
  26. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  27. @dataclass
  28. class Student:
  29. name: str
  30. surname: str
  31. student_id: int
  32. faculty: str
  33. specialty: str
  34. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  35. @dataclass
  36. class Point:
  37. x: int
  38. y: int
  39. def test_2():
  40. point1 = Point(5, 7)
  41. point2 = Point(-10, 12)
  42. print(point1)
  43. print(point2)
  44. assert is_dataclass(Point), 'Point is not dataclass'
  45. assert isinstance(point1, Point)
  46. assert isinstance(point2, Point)
  47. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  48. def main():
  49. # book = Book('asdf', 'asdfas')
  50. # print(book)
  51. # test_1()
  52. test_2()
  53. if __name__ == '__main__':
  54. main()