El módulo de clase de datos se introduce en Python 3.7 como una herramienta de utilidad para crear clases estructuradas especialmente para almacenar datos. Estas clases tienen ciertas propiedades y funciones para tratar específicamente con los datos y su representación.
DataClasses en Python3.6 ampliamente utilizado
Aunque el módulo se introdujo en Python3.7, también se puede usar en Python3.6 instalando la biblioteca de clases de datos .
pip install dataclasses
Las clases de datos se implementan mediante el uso de decoradores con clases. Los atributos se declaran utilizando sugerencias de tipo en Python, que es esencialmente especificar el tipo de datos para las variables en Python.
Python3
# A basic Data Class # Importing dataclass module from dataclasses import dataclass @dataclass class GfgArticle(): """A class for holding an article content""" # Attributes Declaration # using Type Hints title: str author: str language: str upvotes: int # A DataClass object article = GfgArticle("DataClasses", "vibhu4agarwal", "Python", 0) print(article)
Producción:
GfgArticle(título=’Clases de datos’, autor=’vibhu4agarwal’, idioma=’Python’, votos a favor=0)
Los dos puntos notables en el código anterior.
- Sin un constructor __init__() , la clase aceptaba valores y los asignaba a las variables apropiadas.
- La salida del objeto de impresión es una representación ordenada de los datos presentes en él, sin ninguna función explícita codificada para hacer esto. Eso significa que tiene una función __repr__() modificada .
La clase de datos proporciona un constructor __init__() incorporado a las clases que manejan la creación de datos y objetos para ellas.
Python3
article = GfgArticle()
TypeError: __init__() faltan 4 argumentos posicionales requeridos: ‘título’, ‘autor’, ‘idioma’ y ‘votos a favor’
También podemos modificar el funcionamiento del constructor incorporado pasando ciertos argumentos o usando funciones especiales que se discutirán en otros artículos.
Igualdad de clases de datos
Dado que las clases almacenan datos, comprobar si dos objetos tienen los mismos datos es una tarea muy común que se necesita con las clases de datos. Esto se logra usando el operador == .
A continuación se muestra el código de una clase equivalente para almacenar un artículo sin un decorador de clase de datos.
Python3
class NormalArticle(): """A class for holding an article content""" # Equivalent Constructor def __init__(self, title, author, language, upvotes): self.title = title self.author = author self.language = language self.upvotes = upvotes # Two DataClass objects dClassArticle1 = GfgArticle("DataClasses", "vibhu4agarwal", "Python", 0) dClassArticle2 = GfgArticle("DataClasses", "vibhu4agarwal", "Python", 0) # Two objects of a normal class article1 = NormalArticle("DataClasses", "vibhu4agarwal", "Python", 0) article2 = NormalArticle("DataClasses", "vibhu4agarwal", "Python", 0)
Python3
print("DataClass Equal:", dClassArticle1 == dClassArticle2) print("Normal Class Equal:", article1 == article2)
Producción:
DataClass Equal: True Normal Class Equal: False
La igualdad entre dos objetos usando el operador == en python verifica la misma ubicación de memoria. Dado que dos objetos toman diferentes ubicaciones de memoria en la creación, la salida para la igualdad es False . La igualdad entre los objetos DataClass comprueba la igualdad de los datos presentes en él. Esto da cuenta de True como salida para la verificación de igualdad entre dos objetos DataClass que contienen los mismos datos.
Publicación traducida automáticamente
Artículo escrito por vibhu4agarwal y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA