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