Pythoni staatiline meetod ()

Sisseehitatud funktsioon staticmethod () tagastab antud funktsiooni jaoks staatilise meetodi.

Süntaks staticmethod()on:

 staatiline meetod (funktsioon)

Kasutamist staticmethod()peetakse ebaühtlaseks staatilise funktsiooni loomise viisiks.

Seega saate Pythoni uuemates versioonides kasutada @staticmethoddekoraatorit.

Süntaks @staticmethodon:

 @staticmethod def func (args,…)

staticmethod () parameetrid

staticmethod()Meetod võtab ühe parameetri:

  • function - funktsioon, mis tuleb teisendada staatiliseks meetodiks

Tagasiväärtus staatilisest meetodist ()

staticmethod()Naaseb staatiline meetod funktsioon möödunud parameetri.

Mis on staatiline meetod?

Staatilised meetodid, sarnaselt klassimeetoditele, on meetodid, mis on seotud pigem klassi kui selle objektiga.

Need ei nõua klassieksemplari loomist. Niisiis, need ei sõltu objekti olekust.

Staatilise meetodi ja klassimeetodi erinevus on järgmine:

  • Staatiline meetod ei tea klassist midagi ja tegeleb lihtsalt parameetritega.
  • Klassimeetod töötab klassiga, kuna selle parameeter on alati klass ise.

Neid saab nimetada nii klassi kui ka selle objekti järgi.

 Class.staticmethodFunc () või isegi Class (). StaticmethodFunc ()

Näide 1: staatilise meetodi () abil saate luua staatilise meetodi

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

Väljund

 Summa on: 15 

Millal kasutate staatilisi meetodeid?

1. Kasuliku funktsiooni grupeerimine klassi

Staatilistel meetoditel on piiratud kasutusjuhtum, kuna sarnaselt klassi meetoditele või mis tahes muudele meetoditele klassis ei pääse nad klassi enda omadustele juurde.

Kui vajate aga utiliidifunktsiooni, mis ei pääse ligi klassi omadustele, kuid on mõistlik, et see kuulub klassi, kasutame staatilisi funktsioone.

Näide 2: staatilise meetodina saate luua utiliidi funktsiooni

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

Väljund

 Võrdne

Siin on meil Datesklass, mis töötab ainult kriipsudega kuupäevadega. Kuid meie eelmises andmebaasis olid kõik kuupäevad kaldkriipsudega.

Et teisendada kaldkriipsuga kuupäevad kriips-kuupäevad, oleme loonud kasuliku funktsiooni toDashDatesees Dates.

See on staatiline meetod, kuna see ei vaja juurdepääsu mingitele Datesenda omadustele ja nõuab ainult parameetreid.

Saame luua ka toDashDateväljaspool klassi, kuid kuna see töötab ainult kuupäevade jaoks, on loogiline seda Datesklassi sees hoida .

2. Ühe rakenduse olemasolu

Staatilisi meetodeid kasutatakse siis, kui me ei soovi, et klassi alamklassid muudaksid / alistaksid meetodi konkreetse rakenduse.

Näide 3: Kuidas pärimine staatilise meetodi korral töötab?

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

Väljund

 Võrdne

Siinkohal ei tahaks me, et alamklass DatesWithSlashesalistaks staatilise utiliidi meetodi, toDashDatekuna sellel on ainult üks kasutus, st kuupäeva muutmine kriips-kuupäevaks.

Staatilist meetodit saaksime hõlpsalt enda kasuks kasutada, getDate()kui alamklassis alistame meetodi, nii et see DatesWithSlashesklassiga hästi töötab .

Huvitavad Artiklid...