Middle
¿Cómo se comportan las funciones como objetos en Python? ¿Metaclases?
sobes.tech AI
Respuesta de la IA
En Python, las funciones son objetos de primera clase completos. Esto significa que las funciones pueden:
- Asignarse a variables
- Pasarse como argumentos a otras funciones
- Devolver funciones
- Tener atributos y métodos
Por ejemplo, una función tiene un atributo __name__ y se pueden agregar atributos dinámicamente:
def greet(name):
return f"Hello, {name}!"
greet.description = "Función de saludo"
print(greet.description) # Imprimirá: Función de saludo
Las metaclases son clases que crean clases. En Python, todas las clases son objetos creados por una metaclase (por defecto type). Las metaclases permiten controlar la creación de clases, por ejemplo, modificando atributos o comportamientos durante su definición.
Ejemplo de una metaclase simple:
class Meta(type):
def __new__(cls, name, bases, dct):
dct['custom_attr'] = 'Agregado por la metaclase'
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
print(MyClass.custom_attr) # Imprimirá: Agregado por la metaclase
De esta manera, las funciones en Python son objetos con atributos propios, y las metaclases son herramientas poderosas para gestionar dinámicamente la creación de clases.