Python statisk metode ()

Den innebygde funksjonen staticmethod () returnerer en statisk metode for en gitt funksjon.

Syntaksen for staticmethod()er:

 statisk metode (funksjon)

Bruk staticmethod()betraktes som en ikke-pytonisk måte å skape en statisk funksjon på.

Derfor kan du i nyere versjoner av Python bruke @staticmethoddekoratøren.

Syntaksen for @staticmethoder:

 @staticmethod def func (args, …)

staticmethod () Parametere

Den staticmethod()metoden tar en enkelt parameter:

  • funksjon - funksjon som må konverteres til en statisk metode

Returverdi fra statisk metode ()

Den staticmethod()returnerer en statisk metode for en funksjon sendes som parameter.

Hva er en statisk metode?

Statiske metoder, akkurat som klassemetoder, er metoder som er bundet til en klasse i stedet for dens formål.

De krever ikke opprettelse av en klasseinstans. Så de er ikke avhengige av tilstanden til objektet.

Forskjellen mellom en statisk metode og en klassemetode er:

  • Statisk metode vet ingenting om klassen og handler bare om parametrene.
  • Klassemetoden fungerer med klassen siden parameteren alltid er selve klassen.

De kan kalles både av klassen og dens gjenstand.

 Class.staticmethodFunc () eller til og med Class (). StaticmethodFunc ()

Eksempel 1: Lag en statisk metode ved hjelp av staticmethod ()

 class Mathematics: def addNumbers(x, y): return x + y # create addNumbers static method Mathematics.addNumbers = staticmethod(Mathematics.addNumbers) print('The sum is:', Mathematics.addNumbers(5, 10))

Produksjon

 Summen er: 15 

Når bruker du statiske metoder?

1. Gruppere verktøyfunksjon til en klasse

Statiske metoder har et begrenset bruksområde fordi de, som klassemetoder eller andre metoder i en klasse, ikke får tilgang til egenskapene til selve klassen.

Men når du trenger en verktøyfunksjon som ikke får tilgang til noen egenskaper i en klasse, men som er fornuftig at den tilhører klassen, bruker vi statiske funksjoner.

Eksempel 2: Opprett en verktøyfunksjon som en statisk metode

 class Dates: def __init__(self, date): self.date = date def getDate(self): return self.date @staticmethod def toDashDate(date): return date.replace("/", "-") date = Dates("15-12-2016") dateFromDB = "15/12/2016" dateWithDash = Dates.toDashDate(dateFromDB) if(date.getDate() == dateWithDash): print("Equal") else: print("Unequal")

Produksjon

 Lik

Her har vi en Datesklasse som bare jobber med datoer med bindestreker. I vår forrige database var imidlertid alle datoer til stede i skråstreker.

For å konvertere slash-dates til dash-dates, har vi opprettet en verktøyfunksjon toDashDateinnen Dates.

Det er en statisk metode fordi den ikke trenger tilgang til noen egenskaper i Datesseg selv og bare krever parametrene.

Vi kan også lage toDashDateutenfor klassen, men siden det bare fungerer for datoer, er det logisk å holde det inne i Datesklassen.

2. Å ha en enkelt implementering

Statiske metoder brukes når vi ikke vil at underklasser av en klasseendring / overstyrer en spesifikk implementering av en metode.

Eksempel 3: Hvordan fungerer arv med statisk metode?

 class Dates: def __init__(self, date): self.date = date def getDate(self): return self.date @staticmethod def toDashDate(date): return date.replace("/", "-") class DatesWithSlashes(Dates): def getDate(self): return Dates.toDashDate(self.date) date = Dates("15-12-2016") dateFromDB = DatesWithSlashes("15/12/2016") if(date.getDate() == dateFromDB.getDate()): print("Equal") else: print("Unequal")

Produksjon

 Lik

Her ønsker vi ikke at underklassen DatesWithSlashesoverstyrer den statiske verktøymetoden toDashDatefordi den bare har en enkelt bruk, dvs. endre dato til bindestrekningsdatoer.

Vi kunne enkelt bruke den statiske metoden til vår fordel ved å overstyre getDate()metoden i underklassen slik at den fungerer bra med DatesWithSlashesklassen.

Interessante artikler...