Panoramica
- I metodi in Python sono un concetto cruciale da comprendere come programmatore e professionista della scienza dei dati..
- Qui, parleremo di questi diversi tipi di metodi in Python e di come implementare il
introduzione
Python è un linguaggio meraviglioso, ma può essere opprimente per un principiante da padroneggiare. Come ogni lingua parlata, Python richiede che prima di tutto comprendiamo le basi prima di poter costruire applicazioni più diverse e più ampie nel campo della scienza dei dati..
Ecco la domanda: se copri bene i tuoi concetti di base, scoprirai che Python è molto semplice. Ma è fondamentale dedicare il tempo di apprendimento iniziale a familiarizzare con le funzionalità offerte da Python.. Alla lunga pagherà davvero!!
Python esso, Certo, un linguaggio di programmazione orientato agli oggetti (OOP). Questo è un concetto ampio e non è possibile capirlo tutto in una volta.. Infatti, padroneggiare la programmazione orientata agli oggetti può richiedere diversi mesi o addirittura anni. Dipende totalmente dalla tua capacità di capire. Consiglio vivamente di leggere prima il mio precedente articolo sulle "Nozioni di base sulla programmazione orientata agli oggetti"..
Quindi, in questo particolare articolo, Espanderò ulteriormente il concetto di metodi nella programmazione orientata agli oggetti. Parleremo dei diversi tipi di metodi in Python. Dal momento che i metodi Python possono creare confusione a volte se sei nuovo in OOP, Tratterò in dettaglio i metodi Python e i loro tipi in questo articolo.. E poi vedremo i casi d'uso di questi metodi.
Ma aspetta, quali sono i metodi Python? Bene, iniziamo e scopriamolo!
Se sei completamente nuovo in Python, dovresti controllare questo corso Python gratuito che ti insegnerà tutto ciò di cui hai bisogno per iniziare nel mondo della scienza dei dati.
Sommario
- Quali sono i metodi in Python?
- Tipi di metodi in Python
- Metodi di istanza
- metodi di classe
- Metodi statici
- Quando usare Che tipo di metodo Python?
Quali sono i metodi in Python?
La grande domanda!
Nella programmazione orientata agli oggetti, abbiamo oggetti (rullo di tamburi, Per favore). Questi oggetti sono costituiti da proprietà e comportamento. Cosa c'è di più, le proprietà dell'oggetto sono definite dagli attributi e il comportamento è definito da metodi. Questi metodi sono definiti all'interno di una classe. Questi metodi sono la parte di codice riutilizzabile che può essere chiamata / chiamare in qualsiasi momento del programma.
Python offre diversi tipi di questi metodi. Questi sono fondamentali per diventare un programmatore efficiente e, Di conseguenza, sono utili per un professionista della scienza dei dati.
Tipi di metodi in Python
Fondamentalmente, Ci sono tre tipi di metodi in Python:
- metodo di istanza
- metodo di classe
- metodo statico
Parliamo di ogni metodo in dettaglio.
Metodi di istanza
Lo scopo dei metodi di istanza è impostare o ottenere dettagli sulle istanze. (oggetti), ed è per questo che sono conosciuti come metodi di istanza. Sono il tipo più comune di metodo utilizzato in una classe Python..
Hanno un parametro predefinito: se stessi, che punta a un'istanza della classe. Tuttavia, non devi passare tutto questo tempo. È possibile modificare il nome di questo parametro, ma è meglio attenersi alle convenzioni, vale a dire se stessi.
Qualsiasi metodo che crei all'interno di una classe è un metodo di istanza se non diversamente specificato da Python. Vediamo come creare un metodo di istanza:
classe Mia_classe: def metodo_istanza(se stesso): Restituzione "Questo è un metodo di istanza."
E 'così semplice!
Per chiamare un metodo di istanza, deve creare un oggetto / istanza di classe. Con l'aiuto di questo oggetto, può accedere a qualsiasi metodo della classe.
obj = Mia_classe() obj.instance_method()
Quando viene chiamato il metodo di istanza, Python sostituisce il se stessi argomento con oggetto istanza, ogg. Ecco perché è necessario aggiungere un parametro predefinito durante la definizione dei metodi di istanza. Nota che quando metodo_istanza () è chiamato, non deve succedere a se stesso. Python lo fa per te.
Insieme al parametro predefinito self, también puede agregar otros parametriIl "parametri" sono variabili o criteri che vengono utilizzati per definire, misurare o valutare un fenomeno o un sistema. In vari campi come la statistica, Informatica e Ricerca Scientifica, I parametri sono fondamentali per stabilire norme e standard che guidano l'analisi e l'interpretazione dei dati. La loro corretta selezione e gestione sono fondamentali per ottenere risultati accurati e pertinenti in qualsiasi studio o progetto.... de su elección:
classe Mia_classe: def metodo_istanza(se stesso, un): ritorno f"Questo è un metodo di istanza con un parametro a = {un}."
Abbiamo un parametro aggiuntivo “un” qui. Ora creiamo l'oggetto classe e chiamiamo questo metodo di istanza:
obj = Mia_classe() obj.instance_method(10)
Ancora, possiamo vedere che non abbiamo superato 'auto’ come argomento, Python lo fa per noi. Ma altri argomenti devono essere menzionati., in questo caso, è solo uno. Quindi abbiamo passato 10 come valore di “un”.
Puoi usare “se stesso” all'interno di un metodo di istanza per accedere agli altri attributi e metodi della stessa classe:
classe Mia_classe: def __init__(se stesso, un, B): self.a = a self.b = b def instance_method(se stesso): ritorno f"Questo è il metodo di istanza e può accedere alle variabili a = {self.a} and b = {self.b} con l'aiuto di sé."
Nota rispetto al metodo __init __ () è un tipo speciale di metodo noto come costruttore. Questo metodo viene chiamato quando viene creato un oggetto dalla classe e consente alla classe di inizializzare gli attributi di una classe.
obj = Mia_classe(2,4) obj.instance_method()
Testiamo questo codice nella finestra di codifica live qui sotto..
Con l'aiuto della parola chiave "self" self.a e self.b, abbiamo avuto accesso alle variabili presenti nel metodo __init __ () della stessa classe.
Insieme agli oggetti di una classe, un metodo di istanza può accedere alla classe stessa con l'aiuto di Io .__ classe__ attributo. Vediamo come:
classe Mia_classe(): def metodo_istanza(se stesso): Stampa("Ciao! da %s" % self.__class__.__name__) obj = Mia_classe() obj.instance_method()
L'attributo self .__ class __.__ name__ restituisce il nome della classe a cui è correlata l'istanza della classe (se stesso).
2. metodi di classe
Lo scopo dei metodi della classe è impostare o ottenere i dettagli (stato) della classe. Ecco perché sono conosciuti come metodi di classe.. Non possono accedere o modificare dati di istanze specifiche. Sono legati alla classe invece che ai suoi oggetti. Due cose importanti sui metodi di classe:
- Per definire un metodo di classe, devi specificare che si tratta di un metodo di classe con l'aiuto del decoratore @classmethod
- I metodi di classe accettano anche un parametro predefinito: Cls, che punta alla classe. Ancora, Non è necessario assegnare un nome al parametro predefinito “Cls”. Ma è sempre meglio andare con le convenzioni
Ora vediamo come creare metodi di classe:
classe Mia_classe:
@classmethod
def class_method(Cls):
Restituzione "Questo è un metodo di classe."
Più semplice di così!!
Come ho detto prima, con l'aiuto dell'istanza di classe, È possibile accedere a qualsiasi metodo. Quindi creeremo un'istanza anche di questo My_class e proveremo a chiamarlo class_method ():
obj = Mia_classe() metodo_obj.class()
Anche questo funziona!! Possiamo accedere ai metodi della classe con l'aiuto di un'istanza / oggetto class. Ma possiamo accedere direttamente ai metodi della classe senza creare un'istanza o un oggetto della classe. Vediamo come:
Senza creare un'istanza della classe, puoi chiamare il metodo class con – Class_name.method_name ().
Ma questo non è possibile con i metodi di istanza in cui dobbiamo creare un'istanza della classe per chiamare i metodi di istanza. Vediamo cosa succede quando proviamo a chiamare direttamente il metodo di istanza:
My_class.instance_method()
Si è verificato un errore che indica che manca un argomento posizionale: “me”. Ed è ovvio perché i metodi di istanza accettano un'istanza della classe come parametro predefinito. E non fornire alcuna istanza come argomento. Anche se questo può ignorare il nome dell'oggetto come argomento:
My_class.instance_method(ogg)
Degno di nota!
3. Metodi statici
I metodi statici non possono accedere ai dati della classe. In altre parole, non è necessario accedere ai dati della classe. Sono autosufficienti e possono lavorare da soli. Poiché non sono associati ad alcun attributo di classe, Impossibile ottenere o impostare lo stato dell'istanza o lo stato della classe.
Per definire un metodo statico, possiamo usare il decoratore @staticmethod (allo stesso modo usiamo il decoratore @classmethod). A differenza dei metodi di istanza e classe, non è necessario passare alcun parametro speciale o predefinito. Veamos la implementación:
classe Mia_classe:
@staticmethod
def static_method():
Restituzione "Questo è un metodo statico."
E fatto!!
Si noti che in questo caso non sono presenti parametri predefiniti. però, come chiamiamo metodi statici? Ancora, possiamo chiamarli usando l'oggetto / istanza di classe come:
obj = Mia_classe() obj.static_method()
E possiamo chiamare direttamente metodi statici, senza creare un oggetto / istanza di classe:
Potresti notare che l'output è lo stesso usando entrambi i modi di chiamare metodi statici.
Ecco un riassunto della spiegazione che abbiamo visto:
- Un metodo di istanza conosce la sua istanza (e da quello, la sua classe)
- Un metodo di classe conosce la sua classe
- Un metodo statico non conosce la sua classe o istanza
Quando usare quale metodo Python?
I metodi di istanza sono i metodi più utilizzati. anche allora, È difficile sapere quando è possibile utilizzare metodi di classe o metodi statici. La seguente spiegazione soddisferà la tua curiosità:
metodo di classe – L'uso più comune dei metodi di classe consiste nel creare metodi di fabbrica. I metodi factory sono quei metodi che restituiscono un oggetto classe (come costruttore) per diversi casi d'uso. Comprendiamo questo usando l'esempio dato.:
from datetime import date class Dog: def __init__(se stesso, nome, età): self.name = name self.age = age # un metodo di classe per creare un oggetto Dog con anno di nascita. @classmethod def Year(Cls, nome, anno): rendi cls(nome, date.today().anno - anno)
Qui, come potete vedere, Il metodo Class sta modificando lo stato della classe. Se abbiamo l'anno di nascita di qualsiasi cane invece dell'età, quindi con l'aiuto di questo metodo possiamo modificare gli attributi della classe.
controlliamo questo:
Cane1 = Cane('Bruno', 1) Nome.cane1 , Cane1.età
Qui abbiamo costruito un oggetto della classe. Questo prende nome ed età da due parametri. Stampando gli attributi della classe otteniamo Bruno e 1 come uscita, quali erano i valori che abbiamo fornito.
Cane2 = Cane.Anno('Dobby', 2017) Nome.cane2 , Cane2.età
Qui, abbiamo costruito un altro oggetto della classe Dog usando il metodo della classe. Anno(). Il metodo Anno () prende la classe Person come primo parametro Cls e restituisce il costruttore chiamando Cls (Nome, fecha.oggi (). anno – anno), che equivale a Cane (Nome, data di oggi (). Anno – anno).
Come puoi vedere quando stampi il nome e l'età degli attributi, abbiamo ottenuto il nome che abbiamo fornito e l'età convertita dell'anno di nascita utilizzando il metodo della classe.
metodo statico – Utilizzato per creare funzioni di utilità. Per eseguire attività di pianificazione di routine, utilizziamo funzioni di utilità. Un semplice esempio potrebbe essere:
calcolatrice di classe: @staticmethod def add(X, e): restituire x + y print(«L'importo è:', Calcolatrice.aggiungi(15, 10))
Puoi vedere che il caso d'uso di questo metodo statico è molto chiaro, Aggiunta dei due numeri specificati come parametri. Ogni volta che devi aggiungere due numeri, È possibile chiamare direttamente questo metodo senza preoccuparsi della costruzione dell'oggetto.
Note finali
In questo articolo, abbiamo imparato a conoscere i metodi Python, i tipi di metodi e abbiamo visto come implementare ogni metodo.
Ti consiglio di controllare queste risorse sulla programmazione orientata agli oggetti:
Fatemi sapere nella sezione commenti qui sotto se avete domande o commenti. Buon apprendimento!