dataclass_2.py 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. from dataclasses import dataclass, field
  2. from random import choice
  3. from typing import Optional
  4. def choice_color():
  5. print('Start choice')
  6. colors = ['black', 'white', 'red', 'green']
  7. return choice(colors)
  8. @dataclass
  9. class InventoryItem:
  10. name: str
  11. quantity: int = field(default=1)
  12. price: float = field(default=9.99)
  13. color: str = field(default_factory=choice_color)
  14. def test_1():
  15. desk = InventoryItem('Computer desk')
  16. print(desk)
  17. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  18. '''Если нужен пустой список'''
  19. @dataclass
  20. class MyDataclass:
  21. foo: str = field(default_factory=list)
  22. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  23. @dataclass
  24. class Location:
  25. name: str
  26. longitude: float = field(default=0)
  27. latitude: float = field(default=11.5)
  28. def test_2():
  29. stonehenge = Location('Stonehenge', 51, 1.5)
  30. print(stonehenge)
  31. # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
  32. @dataclass
  33. class Person:
  34. first_name: str
  35. last_name: str
  36. hobbies: set = field(default_factory=set)
  37. def main():
  38. # test_1()
  39. test_2()
  40. if __name__ == '__main__':
  41. main()