
Armeggiare con il costruttore di Python per creare classi veloci ed efficienti in termini di memoria
Sapevi che il __init__
il metodo è non un costruttore? Ma se __init__
no creare l’oggetto, allora cosa fa? Come vengono creati gli oggetti in Python? Python ha anche un costruttore?
Lo scopo di questo articolo è quello di capire meglio come Python crea oggetti in modo che possiamo farlo manipolarlo per applicazioni utili.
Per prima cosa approfondiremo il modo in cui Python crea oggetti. Successivamente applicheremo queste conoscenze e discuteremo alcuni casi d’uso interessanti con alcuni esempi pratici. Codifichiamo!
In questa parte scopriremo cosa fa Python dietro le quinte quando crei un oggetto. Nella parte successiva prenderemo queste nuove conoscenze e le applicheremo nella parte 2.
Come creare un oggetto in Python?
Dovrebbe essere piuttosto semplice; crei semplicemente un’istanza di una classe. In alternativa potresti creare un nuovo tipo integrato come a str
o un int
. Nel codice seguente viene creata un’istanza di una classe base. Contiene solo un __init__
funzione e a say_hello
metodo:
class SimpleObject:
greet_name:strdef __init__(self, name:str):
self.greet_name = name
def say_hello(self) -> None:
print(f"Hello {self.greet_name}!")
my_instance = SimpleObject(name="bob")
my_instance.say_hello()
Notare il __init__
metodo. Riceve a name
parametro e ne memorizza il valore nel file greet_name
attributo del SimpleObject
esempio. Ciò consente alla nostra istanza di mantenere stato.
Ora sorge la domanda: per salvare lo Statodobbiamo avere qualcosa su cui salvare lo stato. Dove va __init__
ottenere l’oggetto da?
Quindi, __init__ è un costruttore?
La risposta: tecnicamente no. Costruttori in realtà creare il nuovo oggetto; IL __init__
il metodo è responsabile solo dell’impostazione di stato dell’oggetto. Riceve semplicemente valori attraverso i suoi parametri e li assegna agli attributi della classe come greet_name
.
Fonte: towardsdatascience.com