Pythonin staattinen menetelmä ()

Sisäänrakennettu staticmethod () -funktio palauttaa staattisen menetelmän tietylle funktiolle.

Syntaksi staticmethod()on:

 staattinen menetelmä (toiminto)

Käyttämistä staticmethod()pidetään epä Pythonin tapana luoda staattinen toiminto.

Näin ollen Pythonin uudemmissa versioissa voit käyttää @staticmethodsisustajaa.

Syntaksi @staticmethodon:

 @staticmethod def func (args,…)

staticmethod () -parametrit

staticmethod()Menetelmä ottaa yhden parametrin:

  • function - toiminto, joka on muunnettava staattiseksi menetelmäksi

Palautusarvo staattisesta menetelmästä ()

staticmethod()Palaa staattinen menetelmä funktion välitetään parametrin.

Mikä on staattinen menetelmä?

Staattiset menetelmät, aivan kuten luokan menetelmät, ovat menetelmiä, jotka on sidottu luokkaan sen objektin sijaan.

Ne eivät vaadi luokan ilmentymän luomista. Joten ne eivät ole riippuvaisia ​​kohteen tilasta.

Staattisen menetelmän ja luokan menetelmän ero on:

  • Staattinen menetelmä ei tiedä mitään luokasta ja käsittelee vain parametreja.
  • Luokkamenetelmä toimii luokan kanssa, koska sen parametri on aina luokka itse.

Niitä voidaan kutsua sekä luokan että kohteen mukaan.

 Class.staticmethodFunc () tai jopa Class (). StaticmethodFunc ()

Esimerkki 1: Luo staattinen menetelmä käyttämällä 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))

Tuotos

 Summa on: 15 

Milloin käytät staattisia menetelmiä?

1. Apuohjelmatoiminnon ryhmittely luokkaan

Staattisilla menetelmillä on rajoitettu käyttötapaus, koska ne eivät voi luokkansa ominaisuuksien tavoin käyttää luokkamenetelmiä tai muita luokan menetelmiä.

Kuitenkin, kun tarvitset apuohjelmatoimintoa, joka ei käytä luokan ominaisuuksia, mutta on järkevää kuulua luokkaan, käytämme staattisia toimintoja.

Esimerkki 2: Luo apuohjelmafunktio staattisena menetelmänä

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

Tuotos

 Yhtä suuri

Täällä meillä on Datesluokka, joka toimii vain viivojen kanssa. Aikaisemmassa tietokannassamme kaikki päivämäärät olivat kuitenkin kauttaviivoja.

Siirtääksesi kauttaviivan päivämäärät viiva-päivämääriksi, olemme luoneet toDashDatesisällä apuohjelmatoiminnon Dates.

Se on staattinen menetelmä, koska sen ei tarvitse käyttää mitään omia ominaisuuksiaan Datesja se vaatii vain parametrit.

Voimme luoda toDashDatemyös luokan ulkopuolella, mutta koska se toimii vain päivämäärille, on loogista pitää se Datesluokan sisällä .

2. Yksi toteutus

Staattisia menetelmiä käytetään, kun emme halua luokan muutosta / ohittaa tietyn menetelmän toteutuksen.

Esimerkki 3: Kuinka perintö toimii staattisella menetelmällä?

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

Tuotos

 Yhtä suuri

Täällä emme halua, että alaluokka DatesWithSlashesohittaa staattisen apuohjelman menetelmän, toDashDatekoska sillä on vain yksi käyttö, ts. Vaihda päivämäärä viiva-päivämääriksi.

Voisimme helposti käyttää staattista menetelmää hyödyksi ohittamalla getDate()menetelmän alaluokassa niin, että se toimii hyvin DatesWithSlashesluokan kanssa.

Mielenkiintoisia artikkeleita...