Dataclasses¶
dataclasses is a simpler
alternative to attrs
from python standard library. generics
works with it
out of the box. As with all previous examples we advice you to make your
instances immutable. dataclasses
library has a first class support for
immutability. Enable frozen
setting on class and use replace
function to
copy instancies of it.
>>> from dataclasses import dataclass, replace
>>> from generics import private
>>> @private
... @dataclass(frozen=True)
... class User:
... name: str
... def greet(self):
... return f"Hello, {self.name}"
... def rename(self, name):
... return replace(self, name=name)
...
>>> User
Private::User
>>> user = User("Jeff")
>>> user
Private::User(name='Jeff')
>>> user.greet()
'Hello, Jeff'
>>> user.rename("Kate")
Private::User(name='Kate')
— ⭐ —