„Python“ statistinė metodika ()

Įtaisyta funkcija „staticmethod“ () pateikia tam tikros funkcijos statinį metodą.

Sintaksė staticmethod()yra:

 staticmethod (funkcija)

Naudojimas staticmethod()yra laikomas nepakaltinamu statinės funkcijos sukūrimo būdu.

Taigi naujesnėse „Python“ versijose galite naudoti @staticmethoddekoratorių.

Sintaksė @staticmethodyra:

 @staticmethod def func (argumentai,…)

staticmethod () parametrai

staticmethod()Metodas užima vieną parametrą:

  • function - funkcija, kurią reikia konvertuoti į statinį metodą

Grąžinimo vertė iš staticmethod ()

Kad staticmethod()grįžta statinis metodas funkcijos perduodamas kaip parametras.

Kas yra statinis metodas?

Statiniai metodai, panašiai kaip klasės metodai, yra metodai, susieti su klase, o ne su jos objektu.

Jiems nereikia kurti klasės egzemplioriaus. Taigi, jie nėra priklausomi nuo objekto būklės.

Statinio metodo ir klasės metodo skirtumas yra toks:

  • Statinis metodas nieko nežino apie klasę ir tik nagrinėja parametrus.
  • Klasės metodas veikia su klase, nes jo parametras visada yra pati klasė.

Juos gali vadinti ir klasė, ir jos objektas.

 Class.staticmethodFunc () arba net Class (). StaticmethodFunc ()

1 pavyzdys: sukurkite statinį metodą naudodami 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))

Rezultatas

 Suma yra: 15 

Kada naudojate statinius metodus?

1. Naudingumo funkcijos grupavimas į klasę

Statiniai metodai turi ribotą naudojimo atvejį, nes, kaip ir klasės metodai ar bet kokie kiti metodai klasėje, jie negali pasiekti pačios klasės ypatybių.

Tačiau, kai jums reikia naudingosios funkcijos, kuri nepasiekia jokių klasės ypatybių, bet turi prasmę, kad ji priklauso klasei, mes naudojame statines funkcijas.

2 pavyzdys: sukurkite naudingumo funkciją kaip statinį metodą

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

Rezultatas

 Lygus

Čia mes turime Datesklasę, kuri veikia tik su datomis su brūkšneliais. Tačiau ankstesnėje mūsų duomenų bazėje visos datos buvo nurodytos pasviruoju brūkšniu.

Siekiant konvertuoti Slash datas į baudos aikštelę datų, mes sukūrėme naudingumo funkciją toDashDateper Dates.

Tai yra statinis metodas, nes jam nereikia pasiekti jokių savybių Datesir reikalingi tik parametrai.

Mes galime kurti ir toDashDateuž klasės ribų, bet kadangi tai veikia tik datoms, logiška ją laikyti Datesklasės viduje .

2. Vieną įgyvendinimą

Statiniai metodai naudojami, kai nenorime, kad klasės poklasiai pakeistų / nepaisytų konkretaus metodo įgyvendinimo.

3 pavyzdys: Kaip paveldėjimas veikia naudojant statinį metodą?

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

Rezultatas

 Lygus

Čia mes nenorėtume, kad poklasis DatesWithSlashesnepaisytų statinio naudingumo metodo, toDashDatenes jis naudojamas tik vieną kartą, ty pakeiskite datą į brūkšnio datas.

Statinį metodą galėtume lengvai panaudoti savo naudai, pakeisdami getDate()metodą poklasyje, kad jis gerai veiktų su DatesWithSlashesklase.

Įdomios straipsniai...