Skip to content

Instantly share code, notes, and snippets.

@beckjake
Created November 26, 2019 16:42
Show Gist options
  • Save beckjake/3b103fbf4e646cdcc42a951f50626e1e to your computer and use it in GitHub Desktop.
Save beckjake/3b103fbf4e646cdcc42a951f50626e1e to your computer and use it in GitHub Desktop.
import dataclasses
@dataclasses.dataclass
class MyClass:
a: dataclasses.InitVar[int]
_a: int = dataclasses.field(init=False)
def __post_init__(self, a: int) -> None:
self._a = a
@dataclasses.dataclass
class MySubClass(MyClass):
b: int = dataclasses.field(init=False)
def __post_init__(self, a: int) -> None:
super().__post_init__(a)
self.b = a + 1
@dataclasses.dataclass(init=False)
class MyFinalClass(MySubClass):
c: int
def __init__(self, a: int, c: int) -> None:
super().__init__(a)
self.c = c + self.b
assert MyClass(100)._a == 100
assert MySubClass(100)._a == 100
assert MySubClass(100).b == 101
assert MyFinalClass(100, 50)._a == 100
assert MyFinalClass(100, 50).b == 101
assert MyFinalClass(100, 50).c == 151
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment