Metodo di classe vs Metodo statico in Python

Metodo di classe vs Metodo statico in Python
Parliamo della definizione e dell'uso della classe e dei metodi statici in Python.

Metodo di classe in Python

Il metodo di classe è collegato alla classe stessa e non a nessun oggetto di classe. Inoltre, solo le variabili di classe sono accessibili. La modifica di un valore di tale variabile di classe influisce su tutti gli oggetti di classe. Dichiariamo il metodo come metodo di classe ogni volta che utilizziamo le variabili di classe durante l'implementazione di una tecnica. La classe è citata da una parola chiave "CLS" che è il primo parametro di un metodo di classe. Quando lavoriamo con le tecniche di fabbrica, utilizziamo i metodi di classe. I metodi di fabbrica comprendono quelli che, a seconda del caso d'uso, restituiscono un oggetto di classe.

Usando la funzione @classmethod decoratore e la funzione classmethod (), dobbiamo notificare esplicitamente a Python che il metodo è effettivamente un metodo di classe. Quando sono stati definiti metodi di classe, il processo è abbastanza simile a quello di stabilire una funzione standard. Allo stesso modo, per ottenere variabili di classe dai metodi all'interno della classe, utilizziamo una parola chiave "CLS" come argomento principale. Di conseguenza, abbiamo il controllo sull'aggiornamento dello stato di classe a causa del metodo di classe. Mentre è possibile utilizzare una variabile con un nome diverso per "CLS", farlo è scoraggiato dato che sé è la norma preferita in Python. Il metodo di classe non può accedere agli attributi di istanza; Accederà solo agli attributi di classe.

Metodo statico in Python

Un'attività indipendente può essere completata utilizzando un metodo statico, che è un metodo di utilità generico. I metodi statici di Python non sono esattamente paragonabili a quelli di Java ma piuttosto più vicini a C++. Anche se un metodo statico non contiene un parametro iniziale implicito, come Self e "CLS", non può accedere alla classe ma anche delle variabili di istanza.

Ogni metodo che aggiungiamo a una classe verrà convertito direttamente in un metodo di istanza. Un decoratore @staticmethod e la funzione altrimenti staticmethod () devono essere usati per indicare espressamente a Python che il metodo è effettivamente statico. È abbastanza simile alla costruzione di una funzione regolare per stabilire metodi statici all'interno di una classe.

Differenza

Il metodo di classe ha utilizzato l'accesso e ha modificato lo stato della classe. Modificando un valore di tale variabile di classe che colpisce tutti gli oggetti di classe, può cambiare lo stato di entrambe le classi.

A causa della loro mancanza di accesso alle proprietà degli oggetti (variabili di istanza) e agli attributi di classe, i metodi statici vengono utilizzati solo a volte (variabili di classe). Pertanto, possono davvero essere utili in alcune situazioni, tale conversione di tipo.

Come metodo di fabbrica, vengono utilizzati metodi di classe. I metodi di fabbrica includono quelli che, a seconda del caso d'uso, restituiscono l'oggetto di classe. Ad esempio, prima di generare un oggetto, è necessario eseguire determinate pre-elaborazione su tali dati forniti.

Esempio n. 1

Vediamo come utilizzare il metodo statico nel codice.

Inizialmente, costruiamo una classe chiamata "Class Emp 1" per il dipendente 1. Utilizzeremo un metodo statico, specificando un campione "Y", nonché stampare i risultati mediante l'uso del comando di stampa. Dopodiché, ora abbiamo chiamato "EMP_1.Sample () ", una funzione statica che può anche essere invocata usando l'oggetto" emp1 = emp_1 ()."

Esempio n. 2

Quando si specifica il metodo della classe, utilizzare @classmethod decorator o forse la funzione classmethod (). Per creare un metodo statico, basta utilizzare la funzione staticmethod () o @staticmethod decoratore.

Ogni volta che definire un metodo di classe, utilizzare "CLS" come primo parametro. Fare riferimento alla classe è il "CLS". A causa della mancanza di accesso alle variabili di istanza e alle variabili di classe, i metodi statici non possono accettare attributo e classe come parametro.

Iniziamo dichiarando una classe chiamata "Studente" e dandogli la variabile "School_name". Successivamente, creeremmo un costruttore. Le variabili di istanza Sé.nome e sé.Id sono dichiarati. In seguito, implementiamo il metodo di classe creando la funzione "Change_school ()". Questo metodo include i parametri "CLS" e "Nome". Viene quindi utilizzato il metodo statico. Definiamo il metodo "find_notebook ()" e quindi passiamo l'attributo "notebook_name". Il comando di ritorno viene quindi utilizzato per produrre il risultato desiderato.

Esempio n. 3

Gli attributi esistono per gli oggetti e le classi. Le variabili di classe sono contenute negli attributi di classe, mentre le variabili di istanza fanno parte degli attributi oggetto. Solo le caratteristiche a livello di classe sono accessibili attraverso i metodi di classe. Questo può davvero alterare lo stato di classe.

In questa illustrazione, è stata creata una classe chiamata "Worker" con una variabile denominata "location_name". Abbiamo creato una funzione chiamata init () che ha il sé, il nome e l'ID. Inoltre, accediamo a due diverse variabili di classe e variabili di istanza, di conseguenza, utilizzando due volte il metodo show () e la funzione print (). Il primo comando di stampa consiste in "lavoratore", ".nome 'e' sé.id 'come parametri. Allo stesso modo, il secondo comando di stampa include "posizione", 'self.location_name 'come argomenti. Quindi, accedendo esclusivamente alle variabili di classe, abbiamo chiamato un metodo di classe e definito la funzione cambia_location (). La funzione print () verrebbe applicata altre due volte con il metodo di classe e anche il suo parametro "CLS". Il metodo statico sarà costruito. All'interno di questa metodologia, è definita la funzione find_toolbox (). Viene impiegato il comando "return". Eseguendo queste azioni, abbiamo creato l'oggetto "Anis" e invocato il metodo Show () appropriato.

Esempio n. 4

I metodi statici e di classe sono legati a quella stessa classe. Quindi, il nome della classe dovrebbe essere utilizzato per accedervi.

All'interno di questo esempio, creiamo la classe "giocatore" e definiamo il metodo init (), che ha due variabili sé e team_no in esso. Il metodo di classe e il metodo statico sarebbero costruiti. All'interno del metodo della classe, definiamo la funzione Change_city () che ha due argomenti. La funzione find_accessories () verrà definita all'interno del metodo statico. Questa funzione ha un solo argomento. Successivamente, secondo le istruzioni, abbiamo chiamato la funzione di stampa () due volte per mostrare i metodi statici e di classe. Dopo aver creato un oggetto chiamato "Hammad", abbiamo legato individualmente la classe e i metodi statici ad esso.

Conclusione

In questa guida, abbiamo parlato di metodi di classe e statici in Python, incluso quello che sono, come sono definiti e come crearli. Per aiutarti a capire cosa sta succedendo all'interno degli esempi, nonché come si dovrebbero utilizzare queste funzioni durante il loro percorso di codifica, abbiamo anche incluso alcuni dettagli che hanno distinto tra questi due metodi. In ciascuno di questi casi, vengono utilizzati metodi di classe e metodi statici in Python, insieme a metodi di istanza ove appropriato.