Python staticmethod ()

Vgrajena funkcija staticmethod () vrne statično metodo za dano funkcijo.

Sintaksa staticmethod()je:

 statična metoda (funkcija)

Uporaba staticmethod()velja za ne-pitonski način ustvarjanja statične funkcije.

Zato lahko v novejših različicah Pythona uporabite @staticmethoddekorater.

Sintaksa @staticmethodje:

 @staticmethod def func (argumenti, …)

parametri staticmethod ()

staticmethod()Postopek traja samo en parameter:

  • function - funkcija, ki jo je treba pretvoriti v statično metodo

Vrnjena vrednost iz staticmethod ()

Se staticmethod()vrne statična metoda za funkcijo sprejel kot parameter.

Kaj je statična metoda?

Statične metode, podobno kot metode razredov, so metode, ki so vezane na razred in ne na njegov objekt.

Ne zahtevajo izdelave primerka razreda. Torej niso odvisni od stanja predmeta.

Razlika med statično metodo in metodo razreda je:

  • Statična metoda o razredu ne ve ničesar in se ukvarja samo s parametri.
  • Metoda razreda deluje z razredom, saj je njegov parameter vedno razred sam.

Lahko jih pokliče tako razred kot njegov objekt.

 Class.staticmethodFunc () ali celo Class (). StaticmethodFunc ()

Primer 1: Ustvarite statično metodo z uporabo 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))

Izhod

 Vsota je: 15 

Kdaj uporabljate statične metode?

1. Združevanje funkcije pripomočka v razred

Statične metode imajo omejen primer uporabe, saj tako kot metode razredov ali katere koli druge metode znotraj razreda ne morejo dostopati do lastnosti samega razreda.

Kadar pa potrebujete pomožno funkcijo, ki ne dostopa do nobenih lastnosti razreda, vendar je smiselno, da pripada razredu, uporabimo statične funkcije.

Primer 2: Ustvarite funkcijo pomožnega programa kot statično metodo

 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")

Izhod

 Enako

Tu imamo Datesrazred, ki deluje samo z datumi s pomišljaji. Vendar so bili v naši prejšnji zbirki podatkov vsi datumi v poševnicah.

Za pretvorbo poševnih datumov v pomišljajne datume smo toDashDateznotraj ustvarili funkcijo pripomočka Dates.

Je statična metoda, ker ji ni treba dostopati do lastnih lastnosti Datesin zahteva samo parametre.

Ustvarjamo lahko tudi toDashDatezunaj predavanja, a ker deluje samo za datume, je logično, da ga obdržimo v Datesrazredu.

2. Z enim samim izvajanjem

Statične metode se uporabljajo, kadar ne želimo, da podrazredi razreda spremenijo / preglasijo določeno izvedbo metode.

3. primer: Kako dedovanje deluje s statično metodo?

 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")

Izhod

 Enako

Tu ne bi želeli, da podrazred DatesWithSlashespreglasi metodo statične uporabnosti, toDashDateker ima samo enkratno uporabo, tj. Spremeni datum v pomišljaj.

Z lahkoto bi lahko uporabili statično metodo s preglasitvijo getDate()metode v podrazredu, tako da deluje dobro z DatesWithSlashesrazredom.

Zanimive Članki...