fork(8) download
  1. from dataclasses import dataclass, asdict
  2.  
  3. @dataclass
  4. class Unionable:
  5. def __or__(self, other):
  6. return self.__class__(**asdict(self) | asdict(other))
  7.  
  8. @dataclass
  9. class A(Unionable):
  10. x: int
  11. y: int
  12.  
  13. @dataclass
  14. class B(Unionable):
  15. x: int
  16.  
  17. a = A(x=2, y=6)
  18. b = B(x=4)
  19. print(a | b)
Success #stdin #stdout 0.04s 10960KB
stdin
Standard input is empty
stdout
A(x=4, y=6)