Diferencia entre DataClass vs NamedTuple vs Object en Python

Clase de datos: la clase de datos es un tipo de clase que se utiliza para almacenar datos sin ninguna funcionalidad. Estas clases de datos son solo clases regulares que tienen el propósito principal de almacenar el estado y los datos sin conocer las restricciones y la lógica detrás de esto. Cada vez que crea una clase que en su mayoría contiene atributos y ciertas propiedades para tratar con los datos y su representación.

Ejemplo:

Python3

# Importing dataclass module 
from dataclasses import dataclass 
  
# Annotation
@dataclass
  
# Class with attributes
class GeeksArticle(): 
    """A class for holding an article content"""
    
    # Attributes Declaration 
    # using Type Hints 
    topic: str
    contributor: str
    language: str
    upvotes: int
    
# A DataClass object 
article = GeeksArticle("DataClasses", "nightfury1", "Python", 1)
  
print(article)

Producción:

GfgArticle(topic=’DataClasses’, contribuidor=’nightfury1′, language=’Python’, upvotes=1)

NamedTuple: NamedTuple es una clase que contiene los datos como un formato de diccionario almacenado en elmódulo ‘ colecciones ‘. Almacenó los datos en un formato clave-valor donde cada clave se asignó a más valores. Entonces, accedemos a esos datos usando una clave específica o podemos usar los índices.

Ejemplo:

Python3

# Python script to demonstrate namedtuple()
    
# importing nametuple() from collections module 
from collections import namedtuple
    
# Declaring namedtuple() 
Contributor = namedtuple('Contributor', ['topic', 'author', 'post']) 
    
# Adding values 
C = Contributor('Difference between DataClass vs NamedTuple vs Object in Python',
                'night_fury1',
                'Technical Content Writer Intern') 
    
# Access using index 
print ("The Article Topic : ", end ="") 
print (C[0]) 
    
# Access using name  
print ("The Article Contributor Name : ", end ="") 
print (C.author) 
    
# Access using getattr() 
print ("The Article Contributor Post : ", end ="") 
print (getattr(C, 'post'))

Producción:

El tema del artículo: diferencia entre DataClass, NamedTuple y Object en Python
. Nombre del colaborador del artículo: night_fury1 Publicación
del colaborador del artículo: Escritor de contenido técnico en prácticas

Objeto: Un objeto es simplemente una colección de datos (variables) y métodos (funciones) que actúan sobre esos datos. En otras palabras, decimos que Object es una instancia de la clase.

Ejemplo:

Python3

# Python script for demostraation of object
class Gfg:
  def __init__(self, topic, contributor):
    self.topic = topic
    self.contributor = contributor
  
  def myfunc(self):
    print("Article: ", self.topic)
    print("Contributor: ", self.contributor)
  
# objects creation    
g = Gfg("Difference between DataClass vs NamedTuple vs Object in Python", 
        "nightfury1")
  
# function call
g.myfunc()

Producción:

Artículo: Diferencia entre DataClass, NamedTuple y Object en Python
Colaborador: nightfury1

Tabla de diferencias entre DataClass, NamedTuple y Object

 

clase de datos

NamedTuple

Objeto

Creación DataClass es más lento que otros al crear objetos de datos (2,94 µs). NamedTuple es el más rápido al crear objetos de datos (2.01 µs). Un objeto es más lento que DataClass pero más rápido que NamedTuple al crear objetos de datos (2,34 µs).
Leer propiedad Igual a Object y más rápido que NamedTuple al leer los objetos de datos (24,7 ns). NamedTuple es más lento que otros en la lectura de objetos de datos (26,9 ns). Igual a DataClass y más rápido que NamedTuple (24,7 ns).
Propiedad anidada Más rápido que otros al anidar objetos de datos y sus propiedades (48,1 ns). Más lento que otros en el anidamiento de objetos de datos (75,8 ns). Más rápido que NamedTuple pero más lento que DataClass (52,1 ns).
Ejecutar función Más rápido que NamedTuple pero más lento que los objetos (829 ns). Más lento que otros en ejecución de funciones (946 ns). Más rápido en ejecución de funciones en objetos de datos (821 ns).
Tamaño 56 bytes 80 bytes 56 bytes

Publicación traducida automáticamente

Artículo escrito por night_fury1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *