escribiendo.NamedTuple – Namedtuples mejorados

La clase NamedTuple del módulo de escritura agregado en Python 3.6 es el hermano menor de la clase namedtuple en el módulo de colecciones . La principal diferencia es una sintaxis actualizada para definir nuevos tipos de registro y soporte adicional para sugerencias de tipo. ,el valor-clave

siguiendo

class class_name(NamedTuple):
    field1: datatype
    field2: datatype
class_name = collections.namedtuple('class_name', ['field1', 'field2'])

Python3

# importing the module
from typing import NamedTuple
  
# creating a class
class Website(NamedTuple):
    name: str
    url: str
    rating: int
  
# creating a NamedTuple
website1 = Website('GeeksforGeeks',
                   'geeksforgeeks.org',
                   5)
  
# displaying the NamedTuple
print(website1)

Producción:

Website(name='GeeksforGeeks', url='geeksforgeeks.org', rating=5)

Operaciones de acceso

  1. Acceso por índice: los valores de atributo de namedtuple() están ordenados y se puede acceder a ellos mediante el número de índice, a diferencia de los diccionarios a los que no se puede acceder por índice.
  2. Acceso por nombre de clave: También se permite el acceso por nombre de clave como en los diccionarios.
  3. usando getattr(): Esta es otra forma más de acceder al valor al dar namedtuple y key-value como su argumento.

Python3

# importing the module
from typing import NamedTuple
  
# creating a class
class Website(NamedTuple):
    name: str
    url: str
    rating: int
  
# creating a NamedTuple
website1 = Website('GeeksforGeeks',
                   'geeksforgeeks.org',
                   5)
  
# accessing using index
print("The name of the website is : ", end = "")
print(website1[0])
  
# accessing using name
print("The URL of the website is : ", end = "")
print(website1.url)
    
# accessing using getattr() 
print("The rating of the website is : ", end = "")
print(getattr(website1, 'rating'))

Producción:

The name of the website is : GeeksforGeeks
The URL of the website is : geeksforgeeks.org
The rating of the website is : 5

Los campos son inmutables. Entonces, si intentamos cambiar los valores, obtenemos el error de atributo:

Python3

# importing the module
from typing import NamedTuple
  
# creating a class
class Website(NamedTuple):
    name: str
    url: str
    rating: int
  
# creating a NamedTuple
website1 = Website('GeeksforGeeks',
                   'geeksforgeeks.org',
                   5)
  
# changing the attribute value
website1.name = "Google"

Producción:

AttributeError: can't set attribute

Publicación traducida automáticamente

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