La función getattr() de Python se utiliza para acceder al valor del atributo de un objeto y también ofrece la opción de ejecutar el valor predeterminado en caso de que la clave no esté disponible.
Sintaxis: getattr(obj, clave, definición)
Parámetros:
- obj: el objeto cuyos atributos deben procesarse.
- clave: el atributo del objeto
- def: el valor predeterminado que debe imprimirse en caso de que no se encuentre el atributo.
Devuelve: valor del objeto si el valor está disponible, valor predeterminado en caso de que el atributo no esté presente
y devuelve AttributeError en caso de que el atributo no esté presente y el valor predeterminado no esté
especificado.
Cómo funciona getattr() en Python
Ejemplo 1: demostración del funcionamiento de getattr()
Python3
# Python code to demonstrate # working of getattr() # declaring class class GfG: name = "GeeksforGeeks" age = 24 # initializing object and # python getattr() function call obj = GfG() # use of getattr print("The name is " + getattr(obj, 'name')) # use of getattr with default print("Description is " + getattr(obj, 'description', 'CS Portal')) # use of getattr without default print("Motto is " + getattr(obj, 'motto'))
Producción:
The name is GeeksforGeeks Description is CS Portal
Excepción:
AttributeError: GfG instance has no attribute 'motto'
Ejemplo 2: getattr() cuando no se encuentra el atributo nombrado
Python3
# Python code to demonstrate # working of getattr() # declaring class class GfG: name = "GeeksforGeeks" age = 24 # initializing object obj = GfG() # use of getattr without default print("Gender is " + getattr(obj, 'gender'))
Producción:
AttributeError: 'GfG' object has no attribute 'gender'
Ejemplo 3: análisis de rendimiento y getattr python con parámetro
Python3
# Python code to demonstrate # performance analysis of getattr() import time # declaring class class GfG: name = "GeeksforGeeks" age = 24 # initializing object obj = GfG() # use of getattr to print name start_getattr = time.time() print("The name is " + getattr(obj, 'name')) print("Time to execute getattr " + str(time.time() - start_getattr)) # use of conventional method to print name start_obj = time.time() print("The name is " + obj.name) print("Time to execute conventional method " + str(time.time() - start_obj))
Producción:
The name is GeeksforGeeks Time to execute getattr 5.0067901611328125e-06 The name is GeeksforGeeks Time to execute conventional method 1.1920928955078125e-06
Ejemplo 4: valor predeterminado de getattr Python
Python3
# Python code to demonstrate # working of getattr() # declaring class class GfG: name = "GeeksforGeeks" age = 24 # initializing object obj = GfG() # use of getattr without default print("Motto is " + getattr(obj, 'motto'))
Producción:
AttributeError: 'GfG' object has no attribute 'motto'
Ejemplo 5: Llamada a la función getattr() de Python
Python3
# Python code to demonstrate # working of getattr() # declaring class class GfG: def __init__(self, name, age): self.name = name self.age = age def call(self, x): print(f"{self.name} called with parameters '{x}'") return # initializing object obj = GfG("Vivek", 10) print(obj) print(GfG) print(getattr(obj,'call')) getattr(obj,'call')('arg')
Producción:
<__main__.GfG object at 0x0000023C1ED92748> <class '__main__.GfG'> <bound method GfG.call of <__main__.GfG object at 0x0000023C1ED92748>> Vivek called with parameters 'arg'
Resultado: el método convencional lleva menos tiempo que getattr(), pero cuando se deben usar valores predeterminados en caso de que falten atributos, getattr() es una buena opción.
Aplicaciones: Son muchas las aplicaciones de getattr(), algunas de ellas ya mencionadas en casos de ausencia de atributos de objetos, en desarrollos web donde algunos de los atributos del formulario son opcionales. También es útil en los casos de colecciones de funciones de aprendizaje automático en caso de que algunas funciones falten en la recopilación de datos.
Publicación traducida automáticamente
Artículo escrito por manjeet_04 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA