¿Cómo usar NamedTuple y Dataclass en Python?

alguna vez te has preguntado cómo crear una clase que no sean los métodos ingenuos que a todos nos han enseñado. No se preocupe, en este artículo vamos a cubrir estos métodos alternativos. Hay dos formas alternativas de construir una clase en Python. 

Primero, vamos a crear una clase con los métodos ingenuos. Vamos a crear una transacción de clase, donde cada transacción de pago tiene un remitente, un destinatario, la fecha y el monto. 

Ejemplo:

Python

class Transaction:
      
    def __init__(self, amount, sender, receiver, date):
      self.amount = amount
      self.sender = sender
      self.receiver = receiver
      self.date = date

Esto es bastante sencillo, pero seamos honestos, es mucho código para nosotros, los desarrolladores perezosos. Ahora, aquí es donde entra NamedTuple.

Usando NamedTuple

Named Tuple es esencialmente una extensión del tipo de datos de tupla incorporado de Python. La tupla de Python es una estructura de datos simple para agrupar objetos con diferentes tipos. Su característica definitoria es ser inmutable, es decir, un objeto cuyo estado no se puede modificar después de su creación. 

Comenzaremos con el paquete de colecciones. Este paquete proporciona alternativas a los tipos integrados generales de Python como dict, list, set y tuple. Crear un objeto NamedTuple es tan sencillo como crear la clase. 
 

Python3

import collections
  
Transaction = collections.namedtuple('Transaction',
                                     ['sender', 'amount',
                                      'receiver', 'date'])
  
# Creating object
record = Transaction(sender="Aryaman",
                     receiver="Ankur",
                     date="2020-06-18",
                     amount=1.0)
  
print(record)
print(record.receiver)

Producción:

Transacción (remitente = ‘Aryaman’, cantidad = 1.0, receptor = ‘Ankur’, fecha = ‘2020-06-18’)

Ankur

 Usando clase de datos

DataClass puede ser una nueva característica introducida desde Python 3.7. Se utiliza como decorador. Lo que hace bajo el capó es implementar __init__, __repr__, etc. para nosotros.
 

Ejemplo:

Python3

from dataclasses import dataclass
  
  
@dataclass
class Transaction:
    sender: str
    receiver: str
    date: str
    amount: float
  
  
# Creating object
record = Transaction(sender="Aryaman",
                     receiver="Ankur",
                     date="2020-06-18",
                     amount=1.0)
  
print(record)
print(record.receiver)

Producción:

Transacción (remitente = ‘Aryaman’, receptor = ‘Ankur’, fecha = ‘2020-06-18’, monto = 1.0)
Ankur

NamedTuple se comporta como una tupla, mientras que DataClass se comporta más como una clase normal de Python porque, de forma predeterminada, todos los atributos son mutables y solo se puede acceder a ellos por nombre, no por índice.
 

Publicación traducida automáticamente

Artículo escrito por br0wnhammer 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 *