Sobes.tech
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.