Python statiskā metode ()

Iebūvētā funkcija staticmethod () atgriež statisku metodi noteiktai funkcijai.

Sintakse staticmethod()ir:

 staticmetode (funkcija)

Lietošana staticmethod()tiek uzskatīta par ne-pitonisku veidu, kā izveidot statisku funkciju.

Tādējādi jaunākās Python versijās varat izmantot @staticmethoddekoratoru.

Sintakse @staticmethodir:

 @staticmethod def func (args,…)

staticmethod () parametri

staticmethod()Metode ņem vienu parametru:

  • function - funkcija, kas jāpārvērš par statisku metodi

Atgriešanās vērtība no staticmethod ()

The staticmethod()atgriežas statiska metode funkcijai nodots kā parametrs.

Kas ir statiskā metode?

Statiskās metodes, līdzīgi kā klases metodes, ir metodes, kas ir saistītas ar klasi, nevis tās objektu.

Viņiem nav nepieciešama klases instances izveide. Tātad, tie nav atkarīgi no objekta stāvokļa.

Atšķirība starp statisko metodi un klases metodi ir:

  • Statiskā metode neko nezina par klasi un tikai nodarbojas ar parametriem.
  • Klases metode darbojas ar klasi, jo tās parametrs vienmēr ir pati klase.

Tos var saukt gan klase, gan tās objekts.

 Class.staticmethodFunc () vai pat Class (). StaticmethodFunc ()

1. piemērs: izveidojiet statisku metodi, izmantojot 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))

Rezultāts

 Summa ir: 15 

Kad jūs izmantojat statiskās metodes?

1. Lietderības funkcijas grupēšana klasē

Statiskām metodēm ir ierobežots izmantošanas gadījums, jo, tāpat kā klases metodes vai citas metodes klases ietvaros, tās nevar piekļūt pašas klases īpašībām.

Tomēr, kad jums ir nepieciešama utilītas funkcija, kurai nav piekļuves nevienai klases īpašībai, bet ir jēga piederēt šai klasei, mēs izmantojam statiskās funkcijas.

2. piemērs: izveidojiet utilītas funkciju kā statisku metodi

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

Rezultāts

 Vienāds

Šeit mums ir Datesklase, kas darbojas tikai ar datumiem ar domuzīmēm. Tomēr mūsu iepriekšējā datubāzē visi datumi bija norādīti slīpsvītrās.

Lai pārvērstu slīpsvītras-datumus, lai domuzīme datumi, mēs esam izveidojuši derīguma funkciju toDashDateietvaros Dates.

Tā ir statiska metode, jo tai nav jāpiekļūst nekādām Datespašas īpašībām, un tai nepieciešami tikai parametri.

Mēs varam izveidot arī toDashDateārpus klases, taču, tā kā tas darbojas tikai datumiem, ir loģiski to paturēt Datesklases iekšienē .

2. Vienota ieviešana

Statiskās metodes tiek izmantotas, ja mēs nevēlamies, lai klases apakšklases mainītu / ignorētu konkrētu metodes ieviešanu.

3. piemērs: Kā mantošana darbojas ar statisko metodi?

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

Rezultāts

 Vienāds

Šeit mēs negribētu, lai apakšklase DatesWithSlashesaizstātu statiskās lietderības metodi, toDashDatejo tai ir tikai viena lietošana, ti, datuma maiņa uz domuzīmju datumiem.

Mēs varētu viegli izmantot statisko metodi sev par labu, ignorējot getDate()metodi apakšklasē, lai tā labi darbotos ar DatesWithSlashesklasi.

Interesanti raksti...