diff options
Diffstat (limited to 'tests/run/pep557_dataclasses.py')
-rw-r--r-- | tests/run/pep557_dataclasses.py | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/tests/run/pep557_dataclasses.py b/tests/run/pep557_dataclasses.py new file mode 100644 index 000000000..288c71ed2 --- /dev/null +++ b/tests/run/pep557_dataclasses.py @@ -0,0 +1,54 @@ +# mode: run +# tag: pep557, pure3.7 + +import dataclasses +from typing import Sequence + + +@dataclasses.dataclass +class Color: + """ + >>> list(Color.__dataclass_fields__.keys()) + ['red', 'green', 'blue', 'alpha'] + >>> Color(1, 2, 3) + Color(red=1, green=2, blue=3, alpha=255) + >>> Color(1, 2, 3, 4) + Color(red=1, green=2, blue=3, alpha=4) + >>> Color(green=1, blue=2, red=3, alpha=40) + Color(red=3, green=1, blue=2, alpha=40) + """ + red: int + green: int + blue: int + alpha: int = 255 + + +@dataclasses.dataclass +class NamedColor(Color): + """ + >>> list(NamedColor.__dataclass_fields__.keys()) + ['red', 'green', 'blue', 'alpha', 'names'] + >>> NamedColor(1, 2, 3) + NamedColor(red=1, green=2, blue=3, alpha=255, names=[]) + >>> NamedColor(1, 2, 3, 4) + NamedColor(red=1, green=2, blue=3, alpha=4, names=[]) + >>> NamedColor(green=1, blue=2, red=3, alpha=40) + NamedColor(red=3, green=1, blue=2, alpha=40, names=[]) + >>> NamedColor(1, 2, 3, names=["blackish", "very dark cyan"]) + NamedColor(red=1, green=2, blue=3, alpha=255, names=['blackish', 'very dark cyan']) + """ + names: Sequence[str] = dataclasses.field(default_factory=list) + + +@dataclasses.dataclass(frozen=True) +class IceCream: + """ + >>> IceCream("vanilla") + IceCream(flavour='vanilla', num_toppings=2) + >>> IceCream("vanilla") == IceCream("vanilla", num_toppings=3) + False + >>> IceCream("vanilla") == IceCream("vanilla", num_toppings=2) + True + """ + flavour: str + num_toppings: int = 2 |