← Volver

El decorador @dataclass

dataclass es un decorador dentro del módulo estándar dataclasses, incorporado en Python 3.7. Pretende facilitar la creación de clases cuyo objetivo principal es representar información.

Por ejemplo, si queremos crear una clase Language que represente el nombre (name) de un lenguaje de programación y la fecha en la que fue creado (born), hacemos:

from dataclasses import dataclass

@dataclass
class Language:
name: str
born: int

Y se utiliza como cualquier otra clase:

lang1 = Language("Python", 1989)
lang2 = Language(name="Elixir", born=2012)
print(lang1.name)
print(lang1.born)
print(lang2.name)
print(lang2.born)

Sin el decorador, habríamos de hacerlo de la forma tradicional:

class Language:

def __init__(self, name: str, born: int):
self.name = name
self.born = born

Como se trata de una clase normal, podemos también agregar métodos:

from dataclasses import dataclass
import datetime

@dataclass
class Language:
name: str
born: int

@property
def years_since_born(self) -> int:
return datetime.datetime.now().year - self.born

lang1 = Language("Python", 1989)
print(lang1.name, "fue creado hace", lang1.years_since_born, "años.")



decoradores orientacion-a-objetos dataclasses


👨‍💻 ¡Ya lanzamos el curso oficial de Recursos Python en Udemy! Un curso moderno para aprender Python desde cero con programación orientada a objetos, SQL y tkinter en 2024.

🐍 También te puede interesar:


💡 Ofrecemos servicios profesionales de desarrollo y capacitación en Python a personas y empresas. Consultanos por tu proyecto.