Python staticmethod ()

Ugrađena funkcija staticmethod () vraća statičku metodu za zadanu funkciju.

Sintaksa staticmethod()je:

 statička metoda (funkcija)

Korištenje staticmethod()se smatra nepitonskim načinom stvaranja statičke funkcije.

Stoga, u novijim verzijama Pythona, možete koristiti @staticmethoduređivač.

Sintaksa @staticmethodje:

 @staticmethod def func (argumenti, …)

parametri staticmethod ()

staticmethod()Postupak traje jedan parametar:

  • funkcija - funkcija koju treba pretvoriti u statičku metodu

Vrati vrijednost iz staticmethod ()

U staticmethod()vraća statička metoda za funkciju prošao kao parametar.

Što je statička metoda?

Statičke metode, slično kao metode klase, metode su koje su vezane za klasu, a ne za njezin objekt.

Ne trebaju stvaranje instance klase. Dakle, oni ne ovise o stanju predmeta.

Razlika između statičke metode i metode klase je:

  • Statička metoda ne zna ništa o klasi i samo se bavi parametrima.
  • Metoda klase radi s klasom jer je njezin parametar uvijek sama klasa.

Može ih pozvati i klasa i njezin objekt.

 Class.staticmethodFunc () ili čak Class (). StaticmethodFunc ()

Primjer 1: Stvorite statičku metodu koristeći 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))

Izlaz

 Zbroj je: 15 

Kada koristite statičke metode?

1. Grupiranje funkcije korisnosti u klasu

Statičke metode imaju ograničen slučaj upotrebe jer, poput metoda klase ili bilo kojih drugih metoda unutar klase, ne mogu pristupiti svojstvima same klase.

Međutim, kada vam je potrebna uslužna funkcija koja ne pristupa nijednom svojstvu klase, ali ima smisla da pripada klasi, koristimo statičke funkcije.

Primjer 2: Stvorite uslužnu funkciju kao statičku metodu

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

Izlaz

 Jednak

Ovdje imamo Datesnastavu koja radi samo s datumima s crticama. Međutim, u našoj prethodnoj bazi podataka svi su datumi bili prisutni u kosim crtama.

Kako bismo pretvorili kose datume u crtice, stvorili smo uslužnu funkciju toDashDateunutar Dates.

To je statična metoda jer ne treba pristupiti niti jednom svojstvu Dates, već zahtijeva samo parametre.

Možemo stvarati i toDashDateizvan klase, ali budući da radi samo za datume, logično je zadržati je u Datesklasi.

2. Imati jednu implementaciju

Statičke metode koriste se kada ne želimo da podrazredi klase mijenjaju / nadjačavaju određenu implementaciju metode.

Primjer 3: Kako nasljeđivanje funkcionira statičkom metodom?

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

Izlaz

 Jednak

Ovdje ne bismo željeli da podrazred DatesWithSlashesnadjača statičku uslužnu metodu toDashDatejer ima samo jednu upotrebu, tj. Promjenu datuma u crtice.

Mogli bismo lako koristiti statičku metodu u svoju korist nadjačavanjem getDate()metode u podrazredu tako da dobro radi s DatesWithSlashesklasom.

Zanimljivi članci...