Klassemetode vs statisk metode i Python

Klassemetode vs statisk metode i Python
La oss snakke om definisjonen og bruken av klasse og statiske metoder i Python.

Klassemetode i Python

Klassemetoden er koblet til selve klassen og ikke til noen klasseobjekter. Også bare klassevariabler er tilgjengelige for det. Å endre en verdi av en slik klassevariabel påvirker alle klasseobjekter. Vi erklærer metoden som en klassemetode når vi bruker klassevariabler mens vi implementerer en teknikk. Klassen refereres til av et nøkkelord 'CLS' som er den første parameteren for en klassemetode. Når vi jobber med fabrikkteknikker, bruker vi klassemetoder. Fabrikkmetoder består av de som, avhengig av brukssaken, returnerer et klasseobjekt.

Ved å bruke @ClassMethod Decorator så vel som ClassMethod () -funksjonen, må vi eksplisitt varsle Python om at metoden faktisk er en klassemetode. Når klassemetoder ble definert, er prosessen ganske lik den for å etablere en standardfunksjon. Tilsvarende, for å skaffe klassevariabler fra klassemetoder, bruker vi et 'CLS' nøkkelord som det primære argumentet. Som et resultat har vi kontroll over å oppdatere klassetilstanden på grunn av klassemetoden. Selv om det er mulig å bruke en variabel med et annet navn for 'CLS', blir det motløs gitt at jeget er den foretrukne normen i Python. Klassemetoden har ikke tilgang til forekomstattributter; Det vil bare få tilgang til klasseattributter.

Statisk metode i Python

En uavhengig oppgave kan fullføres ved hjelp av en statisk metode, som er en generisk bruksmetode. Pythons statiske metoder er ikke akkurat sammenlignbare med Java, men heller nærmere C++. Selv om en statisk metode ikke inneholder en implisitt initialparameter, som selv og 'CLS', har den ikke tilgang til klassen, men også forekomstvariabler.

Hver metode vi legger til en klasse, vil bli konvertert direkte til en forekomstmetode. En @staticMethod dekoratør og ellers staticMethod () -funksjonen må brukes til uttrykkelig å indikere for Python at metoden faktisk er en statisk en. Det ligner ganske på å konstruere en vanlig funksjon for å etablere statiske metoder i en klasse.

Forskjell

Klassemetoden benyttet tilgang så vel som endret tilstanden i klassen. Ved å endre en verdi av en slik klassevariabel som påvirker alle klasseobjekter, kan den endre tilstanden til begge klassene.

På grunn av deres manglende tilgang til objektegenskaper (forekomstvariabler) så vel som klasseattributter, brukes statiske metoder bare noen ganger (klassevariabler). Derfor kan de faktisk være nyttige i noen situasjoner, slik type konvertering.

Som en fabrikkmetode brukes klassemetoder. Fabrikkmetoder inkluderer de som, avhengig av brukssaken, returnerer klasseobjektet. Før du genererer et objekt, må du for eksempel utføre en viss forbehandling på disse dataene som leveres.

Eksempel nr. 1

La oss se hvordan du bruker den statiske metoden i koden.

Til å begynne med konstruerer vi en klasse som heter "klasse emp 1" for ansatt 1. Vi vil bruke en statisk metode, spesifisere en prøve 'y', samt skrive ut resultatene ved bruk av utskriftskommandoen. Etter det kalte vi nå “emp_1.prøve (), ”en statisk funksjon som også kan påberopes ved å bruke objektet“ emp1 = emp_1 ().”

Eksempel nr. 2

Når du spesifiserer klassemetoden, bruk @ClassMethod Decorator eller kanskje ClassMethod () -funksjonen. For å lage en statisk metode, bruker du bare staticMethod () -funksjon eller @staticMethod dekoratør.

Når du definerer en klassemetode, bruker du 'CLS' som den aller første parameteren. Med henvisning til klassen er 'CLS'. På grunn av mangelen på tilgang til forekomstvariabler så vel som klassevariabler, kan ikke statiske metoder godta attributt og klasse som en parameter.

Vi starter med å erklære en klasse som heter 'Student' i tillegg til å gi den variabelen 'School_name'. Deretter ville vi opprette en konstruktør. Forekomstvariablene selv.navn og selv.id er erklært. Etter det implementerer vi klassemetoden ved å lage funksjonen “Change_school ()”. Denne metoden inkluderer "CLS" og "Navn" -parametere. Den statiske metoden brukes derfor. Vi definerer metoden “find_notebook ()” og passerer deretter attributtet “Notebook_name”. Returkommandoen blir deretter brukt til å gi ønsket resultat.

Eksempel nr. 3

Attributter finnes for både objekter og klasser. Klassevariabler er inneholdt i klasseattributter, mens forekomstvariabler er en del av objektattributtene. Bare karakteristikker på klassenivå er tilgjengelige gjennom klassemetoder. Dette kan faktisk endre klassetilstanden.

I denne illustrasjonen ble det opprettet en klasse som heter "Worker" med en variabel med navnet "Location_name". Vi opprettet en funksjon som heter init () som har variablene selv, navn, så vel som ID. Videre får vi tilgang til to forskjellige klassevariabler og forekomstvariabler, tilsvarende, ved å bruke Show () -metoden og print () -funksjonen to ganger. Den første utskriftskommandoen består av 'arbeider', 'selv.navn ', og' selv.id 'som parametere. Tilsvarende inkluderer den andre utskriftskommandoen 'beliggenhet', 'selv.Location_name 'som argumenter. Da vi bare får tilgang til klassevariabler, kalte vi en klassemetode samt definerte funksjonen endring_lokasjon (). Print () -funksjonen vil bli brukt to ganger til ved klassemetoden og også dens parameter “CLS”. Den statiske metoden vil bli konstruert. Innenfor denne metodikken er Find_ToolBox () -funksjonen definert. Kommandoen "return" er ansatt. Utførte disse handlingene, vi opprettet objektet “anis” og påkalte riktig show () -metode.

Eksempel nr. 4

Statiske så vel som klassemetoder er knyttet til den samme klassen. Derfor bør klassenavnet brukes for å få tilgang til dem.

Innenfor dette eksemplet lager vi klassen "spiller" så vel som å definere init () -metoden, som har to variabler selv og team_no i den. Klassemetoden og statisk metode vil bli konstruert. Innenfor klassemetoden definerer vi endring_city () -funksjonen som har to argumenter. Funksjonen Find_Accessories () vil bli definert i den statiske metoden. Denne funksjonen har bare ett argument. Deretter, under instruksjonene, kalte vi PRINT () -funksjonen to ganger for å vise de statiske så vel som klassemetoder. Etter å ha opprettet et objekt som heter “Hammad”, ble vi individuelt bundet klassen så vel som statiske metoder til den.

Konklusjon

I denne guiden snakket vi om klasse så vel som statiske metoder i Python, inkludert hva de er, hvordan de er definert, og hvordan du lager dem. For å hjelpe deg med å forstå hva som skjer inne i eksemplene, samt hvordan man skal utnytte disse funksjonene gjennom hele kodingsreisen, inkluderte vi også noen detaljer som skilte mellom disse to metodene. I hvert av disse tilfellene brukes klassemetoder, så vel som statiske metoder i Python, sammen med forekomstmetoder der det er aktuelt.