Creación dinámica de una dataclass. Puede ser útil, por ejemplo, para convertir un schema de pydantic en un dataclass.
Python >= 3.7.
- Importamos
make_dataclass
.
from dataclasses import make_dataclass
- Creación dinámica:
MyClass = make_dataclass('MyClass', init=True,
fields=[('x', int),
'y',
('z', int, field(default=5))],
namespace={'add_one': lambda self: self.x + 1})
- Su dataclass equivalente:
@dataclass(init=True)
class MyClass:
x: int
y: 'typing.Any'
z: int = 5
def add_one(self):
return self.x + 1
- Ejemplo con pydantic (en construcción):
MyClass = make_dataclass('MyClass', init=True,
fields=MyPydanticClass.__annotations__,
namespace={'add_one': lambda self: self.x + 1})