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
- 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.
- Acceso por nombre de clave: También se permite el acceso por nombre de clave como en los diccionarios.
- 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