Explorando clases y objetos anónimos en Python
La función integrada type() de Python devuelve la clase a la que pertenece un objeto. En Python, una clase, ya sea una clase integrada o una clase definida por el usuario, son objetos de tipo class.
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á la siguiente salida:
class of int <class 'type'> class of list <class 'type'> class of dict <class 'type'> class of myclass <class 'type'>
La función type() tiene una versión de tres argumentos como sigue:
Sintaxis
newclass=type(name, bases, dict)
Usando la sintaxis anterior, una clase puede crearse dinámicamente. Tres argumentos de la función type son:
name — nombre de la clase que se convierte en el atributo __name__ de la nueva clase
bases — tupla que consiste en clases padre. Puede estar vacía si no es una clase derivada
dict — diccionario que forma el espacio de nombres de la nueva clase conteniendo 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 name es una cadena nula, el segundo argumento es una tupla de una clase, la clase object (note que cada clase en Python hereda de la clase object). Agregamos ciertas variables de instancia como tercer argumento diccionario. 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ónimos
También podemos agregar variables de instancia y métodos de instancia dinámicamente. Vea 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á la siguiente salida:
5 6
python
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Domine el Formateo de Strings en Python con format(): Ejemplos Claros
- Dominando Objetos y Clases en Python: Guía Práctica
- Dominando la Sobrecarga de Operadores en Python: Guía Práctica
- Domine <code>__slots__</code> en clases Python: optimice memoria y velocidad
- Chuleta de Python Basics: Tipos de datos esenciales, diccionarios, listas y funciones
- Funciones en Python explicadas: Construyendo módulos de código reutilizable
- Diccionarios en Python: Añadir, Actualizar y Gestionar Pares Clave/Valor
- SciPy en Python: Tutorial completo sobre librerías y funciones
- Colas en Python: entendiendo FIFO y LIFO con ejemplos prácticos
- Dominando Números, Conversión de Tipos y Matemáticas en Python