Metodi Istanza vs. Statico vs. Classe in Python Le differenze importanti

Metodi Istanza vs. Statico vs. Classe in Python Le differenze importanti / Programmazione

I metodi Python possono spesso confondere una volta entrati nella programmazione orientata agli oggetti (OOP). Questa guida copre i tre principali tipi di metodi in Python.

I 3 tipi di metodi in Python

Esistono tre tipi di metodi in Python: metodi di istanza, metodi statici, e metodi di classe.

Non è sempre necessario conoscere le differenze per codificare gli script Python di base, ma una volta che avanzi in OOP, le differenze possono fare un grande cambiamento.

Se sei nuovo in Python, o vuoi solo sperimentare senza dover installare nulla, assicurati di visitare queste shell Python interattive online Prova Python nel tuo browser con queste shell interattive online gratis Prova Python nel tuo browser con queste interattive online gratuite Conchiglie Sia che stiate esaminando questi esempi Python o rivedendo le basi degli array e degli elenchi, potete testare il codice direttamente nel vostro browser. Ecco i migliori interpreti Python online che abbiamo trovato. Leggi di più .

Prima di iniziare: Capire i modelli di decoratore

Prima di esaminare le differenze, è importante comprendere un modello di progettazione noto come modello di decoratore, o semplicemente chiamato a decoratore.

I decoratori sembrano complessi, ma non c'è niente da temere. I decoratori sono semplicemente funzioni. È possibile scrivere da soli o utilizzare quelli inclusi nelle librerie o la libreria standard Python.

Come ogni funzione, i decoratori svolgono un compito. La differenza qui è che i decoratori applicano la logica o cambiano il comportamento di altre funzioni. Sono un modo eccellente per riutilizzare il codice e possono aiutare a separare la logica in preoccupazioni individuali.

Il pattern decorator è il modo preferito da Python per definire i metodi statici o di classe. Ecco come appare in Python:

class DecoratorEsempio: "" "Classe di esempio" "" def __init __ (self): "" "Esempio di installazione" "" print ('Hello, World!') @staticmethod def example_function (): "" "Questo metodo è decorato!" "" print ('I \' ma decorate function! ') de = DecoratorExample () de.example_function ()

I decoratori devono immediatamente precedere una dichiarazione di funzione o di classe. Iniziano con il @ firmate e, a differenza dei metodi normali, non dovete mettere parentesi alla fine a meno che non passiate argomenti.

È possibile combinare più decoratori, scrivere i propri e applicarli alle classi, ma non è necessario eseguire tali operazioni per questi esempi.

Metodi di istanza in Python

I metodi di istanza sono il tipo più comune di metodi nelle classi Python. Questi sono così chiamati perché possono accedere a dati unici della loro istanza. Se hai due oggetti creati da una classe di auto, ognuno di essi può avere proprietà diverse. Possono avere colori diversi, dimensioni del motore, posti a sedere e così via.

I metodi di istanza devono avere se stesso come parametro, ma non è necessario passare questo in ogni momento. Il sé è un altro termine speciale di Python. All'interno di qualsiasi metodo di istanza, puoi utilizzare self per accedere a tutti i dati o metodi che potrebbero risiedere nella tua classe. Non sarai in grado di accedervi senza passare attraverso te stesso.

Infine, come i metodi di istanza sono i più comuni, non c'è bisogno di un decoratore. Qualsiasi metodo che crei verrà automaticamente creato come metodo di istanza, a meno che tu non dica diversamente a Python.

Ecco un esempio:

class DecoratorEsempio: "" "Classe di esempio" "" def __init __ (self): "" "Esempio di installazione" "" print ('Hello, World!') self.name = 'Decorator_Example' def example_function (self): "" " Questo metodo è un metodo di istanza! "" "Print ('I \' m an instance method! ') Print (' Il mio nome è '+ self.name) de = DecoratorExample () de.example_function ()

Il nome la variabile è accessibile tramite se stesso. Si noti che quando example_function è chiamato, non devi passare auto in-Python fa questo per te.

Metodi statici in Python

I metodi statici sono metodi che sono correlati a una classe in qualche modo, ma non hanno bisogno di accedere a dati specifici della classe. Non devi usare se stesso, e non hai nemmeno bisogno di istanziare un'istanza, puoi semplicemente chiamare il tuo metodo:

class DecoratorEsempio: "" "Classe di esempio" "" def __init __ (self): "" "Esempio di installazione" "" print ('Hello, World!') @staticmethod def example_function (): "" "Questo metodo è un metodo statico ! "" "stampa ('I \' ma metodo statico! ') de = DecoratorExample.example_function ()

Il @staticmethod decoratore è stato usato per dire a Python che questo metodo è un metodo statico.

I metodi statici sono ottimi per le funzioni di utilità, che eseguono un'attività separatamente. Non hanno bisogno (e non possono) accedere ai dati della classe. Devono essere completamente autosufficienti e funzionano solo con i dati passati come argomenti. È possibile utilizzare un metodo statico per aggiungere due numeri insieme o stampare una determinata stringa.

Metodi di classe in Python

I metodi di classe sono il terzo e ultimo tipo di metodo OOP da conoscere. I metodi di classe conoscono la loro classe. Non possono accedere a dati di istanza specifici, ma possono chiamare altri metodi statici.

I metodi di classe non sono necessari se stesso come argomento, ma hanno bisogno di un parametro chiamato cls. Questo rappresenta classe, e come auto, viene automaticamente passato da Python.

I metodi di classe sono creati usando il @classmethod decoratore.

class DecoratorEsempio: "" "Classe di esempio" "" def __init __ (self): "" "Esempio di installazione" "" print ('Hello, World!') @classmethod def example_function (cls): "" "Questo metodo è una classe metodo! "" "print ('I \' ma metodo di classe! ') cls.some_other_function () @staticmethod def some_other_function (): print (' Hello! ') de = DecoratorExample () de.example_function ()

I metodi di classe sono probabilmente i tipi di metodi più confusi dei tre, ma hanno i loro usi. I metodi Class possono manipolare la classe stessa, il che è utile quando lavori su progetti più grandi e complessi.

Quando utilizzare ciascun tipo di metodo

Può sembrare una decisione dura e scoraggiante scegliere tra i tipi di metodi in Python, ma presto imparerai con un po 'di pratica.

Anche se scrivi solo piccoli script per divertirti, imparare una nuova funzionalità OOP di Python è una grande abilità da conoscere e può aiutare a rendere il tuo codice più facile da risolvere e più facile da riutilizzare in futuro.

In sintesi:

  1. Metodi di istanza: Il tipo di metodo più comune. In grado di accedere a dati e proprietà esclusive di ogni istanza.
  2. Metodi statici: Non posso accedere ad altro nella classe. Codice completamente autonomo.
  3. Metodi di classe: Può accedere a metodi limitati nella classe. Può modificare dettagli specifici della classe.

Se questo tutorial era un po 'avanzato, o non proprio quello che stavi cercando, allora perché non dare un'occhiata a questi corsi per andare da Python per principianti a professionisti 5 Corsi che ti porteranno da Python Beginner a Pro 5 Corsi che ti porteranno Prendi da Python Beginner a Pro Questi cinque corsi ti insegnano tutto sulla programmazione in Python, una delle lingue più calde là fuori in questo momento. Leggi di più ? Questi 5 siti Web sono ideali anche per i principianti di Python. Se vuoi un uso fisico e reale di Python, ma sei annoiato del Raspberry Pi, che ne dici della nostra guida al controllo di Arduino con Python Come programmare e controllare un Arduino con Python Come programmare e controllare un Arduino con Python Tristemente, è impossibile programmare direttamente un Arduino in Python, ma puoi controllarlo via USB usando un programma Python. Ecco come. Leggi di più ?

Scopri di più su: Programming, Python.