81_dataclasses.py 628 B

123456789101112131415161718192021222324252627282930313233343536
  1. from dataclasses import dataclass, asdict
  2. @dataclass
  3. class A:
  4. x: int
  5. y: str = '123'
  6. assert repr(A(1)) == "A(x=1, y='123')"
  7. assert repr(A(x=3)) == "A(x=3, y='123')"
  8. assert repr(A(1, '555')) == "A(x=1, y='555')"
  9. assert repr(A(x=7, y='555')) == "A(x=7, y='555')"
  10. assert asdict(A(1, '555')) == {'x': 1, 'y': '555'}
  11. assert A(1, 'N') == A(1, 'N')
  12. assert A(1, 'N') != A(1, 'M')
  13. #################
  14. @dataclass
  15. class Base:
  16. i: int
  17. j: int
  18. class Derived(Base):
  19. k: str = 'default'
  20. def sum(self):
  21. return self.i + self.j
  22. d = Derived(1, 2)
  23. assert d.i == 1
  24. assert d.j == 2
  25. assert d.k == 'default'
  26. assert d.sum() == 3