Metodi di istanza contro metodi statici e di classe in Python: le differenze importanti

Metodi di istanza contro metodi statici e di classe in Python: le differenze importanti

I metodi Python possono spesso creare confusione una volta che si entra nella programmazione orientata agli oggetti (OOP). Questa guida copre i tre principali tipi di metodi in Python.





I 3 tipi di metodi in Python

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





Conoscere le differenze non è sempre necessario per codificare gli script Python di base, ma una volta che si avanza in OOP, le differenze possono apportare un grande cambiamento.





Se non conosci Python o vuoi semplicemente sperimentare senza dover installare nulla, assicurati di visitare questi shell Python interattive online .

Prima di iniziare: Capire i modelli di decoratore

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



I decoratori sembrano complessi, ma non c'è nulla da temere. I decoratori sono semplicemente funzioni. Puoi scriverli tu stesso o usare quelli inclusi nelle librerie o la libreria standard di Python.

Come ogni funzione, i decoratori svolgono un compito. La differenza qui è che i decoratori applicano la logica o modificano 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 decoratore è il modo preferito di Python per definire metodi statici o di classe. Ecco come appare in Python:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is decorated! '''
print('I'm a decorated function!')

de = DecoratorExample()
de.example_function()

I decoratori devono precedere immediatamente una funzione o una dichiarazione di classe. Iniziano con @ sign e, a differenza dei metodi normali, non è necessario inserire le parentesi alla fine a meno che non si passino argomenti.





È possibile combinare più decoratori, scriverne di propri e applicarli anche alle classi, ma non sarà necessario eseguire alcuna operazione per questi esempi.

il desktop remoto non riesce a trovare il computer

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 univoci della loro istanza. Se hai due oggetti ciascuno creato da una classe di auto, ognuno potrebbe avere proprietà diverse. Possono avere colori, dimensioni del motore, sedili e così via diversi.

I metodi di istanza devono avere se stesso come parametro, ma non è necessario passarlo ogni volta. Self è un altro termine speciale di Python. All'interno di qualsiasi metodo di istanza, puoi utilizzare self per accedere a qualsiasi dato o metodo che potrebbe risiedere nella tua classe. Non sarai in grado di accedervi senza passare per te stesso.

Infine, poiché i metodi di istanza sono i più comuni, non è necessario alcun decoratore. Qualsiasi metodo che crei verrà creato automaticamente come metodo di istanza, a meno che tu non dica diversamente a Python.

Ecco un esempio:

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
self.name = 'Decorator_Example'
def example_function(self):
''' This method is an instance method! '''
print('I'm an instance method!')
print('My name is ' + self.name)

de = DecoratorExample()
de.example_function()

Il nome si accede alla variabile tramite se stesso . Nota che quando esempio_funzione si chiama, non devi passare per te stesso---Python lo fa per te.

Metodi statici in Python

I metodi statici sono metodi che sono in qualche modo correlati a una classe, 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 DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@staticmethod
def example_function():
''' This method is a static method! '''
print('I'm a static method!')

de = DecoratorExample.example_function()

Il @metodostatico decorator è stato utilizzato per dire a Python che questo metodo è un metodo statico.

I metodi statici sono ottimi per le funzioni di utilità, che eseguono un'attività isolatamente. Non hanno bisogno (e non possono) accedere ai dati della classe. Dovrebbero essere completamente autonomi e funzionare solo con i dati passati come argomenti. Puoi utilizzare un metodo statico per sommare due numeri 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 istanze 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 sta per classe , e come self, viene automaticamente passato da Python.

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

class DecoratorExample:
''' Example Class '''
def __init__(self):
''' Example Setup '''
print('Hello, World!')
@classmethod
def example_function(cls):
''' This method is a class method! '''
print('I'm a class method!')
cls.some_other_function()
@staticmethod
def some_other_function():
print('Hello!')

de = DecoratorExample()
de.example_function()

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

Quando utilizzare ciascun tipo di metodo

Può sembrare una decisione difficile e scoraggiante scegliere tra i tipi di metodi in Python, ma presto ci prenderai la mano con un po' di pratica.

connettersi alla rete ma non a Internet

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

In sintesi:

  1. Metodi di istanza: Il tipo di metodo più comune. In grado di accedere a dati e proprietà univoci per ogni istanza.
  2. Metodi statici: Non è possibile accedere a nient'altro nella classe. Codice totalmente autonomo.
  3. Metodi di classe: Può accedere a metodi limitati nella classe. Può modificare i dettagli specifici della classe.

Se questo tutorial era un po' avanzato, o non proprio quello che stavi cercando, allora perché non dai un'occhiata a questi corsi per passare da Python principiante a professionista? Questi 5 siti Web sono ottimi anche per i principianti di Python. Se vuoi un uso fisico e reale di Python, ma sei stanco del Raspberry Pi, che ne dici della nostra guida a? controllare Arduino con Python ?

Condividere Condividere Tweet E-mail Come pulire il tuo PC Windows utilizzando il prompt dei comandi

Se il tuo PC Windows sta esaurendo lo spazio di archiviazione, ripulisci la spazzatura usando queste veloci utility del prompt dei comandi.

Leggi Avanti
Argomenti correlati
  • Programmazione
  • Programmazione
  • Pitone
Circa l'autore Joe Coburn(136 articoli pubblicati)

Joe si è laureato in Informatica presso l'Università di Lincoln, nel Regno Unito. È uno sviluppatore di software professionista e quando non pilota droni o scrive musica, lo si può trovare spesso a scattare foto o produrre video.

Altro da Joe Coburn

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti