La reflexión se refiere a la capacidad del código para examinar los atributos de los objetos que se pueden pasar como parámetros a una función. Por ejemplo, si escribimos type(obj), Python devolverá un objeto que representa el tipo de obj.
Usando la reflexión, podemos escribir una función inversa recursiva que funcione para strings, listas y cualquier otra secuencia que admita el corte y la concatenación. Si un obj es una referencia a una string, Python devolverá el objeto de tipo str. Además, si escribimos str() obtenemos una string que es la string vacía. En otras palabras, escribir str() es lo mismo que escribir “”. Del mismo modo, escribir list() es lo mismo que escribir [].
# Python program to illustrate reflection def reverse(sequence): sequence_type = type(sequence) empty_sequence = sequence_type() if sequence == empty_sequence: return empty_sequence rest = reverse(sequence[1:]) first_sequence = sequence[0:1] # Combine the result final_result = rest + first_sequence return final_result # Driver code print(reverse([10, 20, 30, 40])) print(reverse("GeeksForGeeks"))
Producción:
[40, 30, 20, 10] skeeGroFskeeG
Funciones que permiten la reflexión
Las funciones que permiten la reflexión incluyen type(), isinstance(), callable(), dir() y getattr().
- type and isinstance – Consulte aquí
- Callable() : Un callable significa cualquier cosa a la que se pueda llamar. Para un objeto, determina si se puede llamar. Se puede hacer que se pueda llamar a una clase proporcionando un método __call__(). El método callable() devuelve True si el objeto pasado parece invocable. Si no, devuelve False.
Ejemplos:x = 5 def testFunction(): print("Test") y = testFunction if (callable(x)): print("x is callable") else: print("x is not callable") if (callable(y)): print("y is callable") else: print("y is not callable")
Producción:
x is not callable y is callable
invocable cuando se usa en programación orientada a objetos
class Foo1: def __call__(self): print('Print Something') print(callable(Foo1))
Producción:
True
- Dir: el método dir() intenta devolver una lista de atributos válidos del objeto. El dir() intenta devolver una lista de atributos válidos del objeto.
- Si el objeto tiene el método __dir__(), se llamará al método y debe devolver la lista de atributos.
- Si el objeto no tiene el método __dir()__, este método intenta encontrar información del atributo __dict__ (si está definido) y del tipo de objeto. En este caso, la lista devuelta por dir() puede no estar completa.
Ejemplos:
number = [1,2,3] print(dir(number)) characters = ["a", "b"] print(dir(number))
Producción:
class Employee: salary = 25000 company_name= "geeksforgeeks" employee = Employee() print('The salary is:', getattr(employee, "salary")) print('The salary is:', employee.salary)
Producción:
The salary is: 25000 The salary is: 25000
Enlaces de referencia
2. docs_python
3. wikibooks
Este artículo es una contribución de Subhajit Saha . Si le gusta GeeksforGeeks y le gustaría contribuir, también puede escribir un artículo usando contribuya.geeksforgeeks.org o envíe su artículo por correo a contribuya@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA