Middle
Come si comportano le funzioni come oggetti in Python? Metaclassi?
sobes.tech AI
Risposta dell'AI
In Python, le funzioni sono oggetti di prima classe a tutti gli effetti. Ciò significa che le funzioni possono:
- Assegnate a variabili
- Passate come argomenti ad altre funzioni
- Restituite da funzioni
- Avere attributi e metodi
Ad esempio, una funzione ha un attributo __name__ e si possono aggiungere dinamicamente i propri attributi:
def greet(name):
return f"Hello, {name}!"
greet.description = "Funzione di saluto"
print(greet.description) # Mostrerà: Funzione di saluto
Le metaclassi sono classi che creano classi. In Python, tutte le classi sono oggetti create da una metaclasse (di default type). Le metaclassi permettono di controllare la creazione delle classi, ad esempio modificando attributi o comportamenti durante la loro definizione.
Esempio di una metaclasse semplice:
class Meta(type):
def __new__(cls, name, bases, dct):
dct['custom_attr'] = 'Aggiunto dalla metaclasse'
return super().__new__(cls, name, bases, dct)
class MyClass(metaclass=Meta):
pass
print(MyClass.custom_attr) # Mostrerà: Aggiunto dalla metaclasse
In questo modo, le funzioni in Python sono oggetti con attributi propri, e le metaclassi sono strumenti potenti per gestire la creazione dinamica delle classi.