Explorando clases y objetos anónimos en Python
La función type() incorporada de Python devuelve la clase a la que pertenece un objeto. En Python, una clase, tanto una clase incorporada como una clase definida por el usuario, son objetos de tipo clase.
Ejemplo
class myclass:
def __init__(self):
self.myvar=10
return
obj = myclass()
print ('class of int', type(int))
print ('class of list', type(list))
print ('class of dict', type(dict))
print ('class of myclass', type(myclass))
print ('class of obj', type(obj))
Producirá el siguiente resultado:
class of int <class 'type'> class of list <class 'type'> class of dict <class 'type'> class of myclass <class 'type'>
El tipo() tiene una versión de tres argumentos como sigue:
Sintaxis
newclass=type(name, bases, dict)
Usando la sintaxis anterior, se puede crear una clase dinámicamente. Tres argumentos de tipo función son −
-
nombre - nombre de la clase que se convierte en __nombre__ atributo de la nueva clase
-
bases:tupla que consta de clases principales. Puede estar en blanco si no es una clase derivada
-
dict:diccionario que forma el espacio de nombres de la nueva clase que contiene atributos y métodos y sus valores.
Crear una clase anónima
Podemos crear una clase anónima con la versión anterior de la función type(). El argumento del nombre es una cadena nula, el segundo argumento es una tupla de una clase, la clase de objeto (tenga en cuenta que cada clase en Python se hereda de la clase de objeto). Agregamos ciertas variables de instancia como el tercer diccionario de argumentos. Lo mantenemos vacío por ahora.
anon=type('', (object, ), {})
Crear un objeto anónimo
Para crear un objeto de esta clase anónima −
obj = anon()
print ("type of obj:", type(obj))
El resultado muestra que el objeto es de clase anónima
type of obj: <class '__main__.'>
Ejemplo de clase y objeto anónimo
También podemos agregar variables de instancia y métodos de instancia dinámicamente. Eche un vistazo a este ejemplo:
def getA(self):
return self.a
obj = type('',(object,),{'a':5,'b':6,'c':7,'getA':getA,'getB':lambda self : self.b})()
print (obj.getA(), obj.getB())
Producirá el siguiente resultado:
5 6
python
- Manejo de excepciones de Python Uso de la instrucción try, except y finalmente
- Use el guión bajo en el REPL
- Python - E/S de archivos
- Diccionario de Python
- Python vs JavaScript:diferencia entre JavaScript y Python
- Lista de Python
- Python - Tuplas
- Declaración Python Print():cómo imprimir con ejemplos
- Python - Manejo de excepciones
- Python - Cadenas
- Depurador de Python:mejore sin esfuerzo sus habilidades de depuración