Питхон статицметход ()

Уграђена функција статицметход () враћа статичку методу за дату функцију.

Синтакса staticmethod()је:

 статицметход (функција)

Употреба staticmethod()се сматра непитонским начином стварања статичке функције.

Отуда, у новијим верзијама Питхона, можете користити @staticmethodдекоратер.

Синтакса @staticmethodје:

 @статицметход деф фунц (аргс, …)

параметри статицметход ()

staticmethod()Метод узима само један параметар:

  • функција - функција коју треба претворити у статичку методу

Врати вредност из статицметход ()

У staticmethod()враћа статички метод за функцију прошло као параметар.

Шта је статичка метода?

Статичке методе, слично као методе класе, су методе које су везане за класу, а не за њен објекат.

Не захтевају креирање инстанце класе. Дакле, они не зависе од стања предмета.

Разлика између статичке методе и методе класе је:

  • Статичка метода не зна ништа о класи и само се бави параметрима.
  • Метода класе ради са класом, јер је њен параметар увек сама класа.

Може их позвати и класа и њен објекат.

 Цласс.статицметходФунц () или чак Цласс (). СтатицметходФунц ()

Пример 1: Креирајте статичку методу користећи статицметход ()

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

Оутпут

 Збир је: 15 

Када користите статичке методе?

1. Груписање функције корисности у класу

Статичке методе имају ограничен случај употребе јер, попут метода класе или било којих других метода у класи, не могу приступити својствима саме класе.

Међутим, када вам је потребна услужна функција која не приступа ниједном својству класе, али има смисла да припада класи, користимо статичке функције.

Пример 2: Креирајте услужну функцију као статичку методу

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

Оутпут

 Једнако

Овде имамо Datesкласу која ради само са датумима са цртицама. Међутим, у нашој претходној бази података сви датуми су били присутни у косим цртама.

Да бисмо претворили косе датуме у цртице, створили смо услужну функцију toDashDateунутар Dates.

То је статична метода јер не треба да приступи ниједном својству Datesи захтева само параметре.

Такође можемо да креирамо toDashDateизван класе, али пошто то функционише само за датуме, логично је да се задржи у Datesкласи.

2. Имати једну примену

Статичке методе се користе када не желимо да подкласе класе промене / замене одређену имплементацију методе.

Пример 3: Како наследство функционише статичким методом?

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

Оутпут

 Једнако

Овде не бисмо желели да поткласа DatesWithSlashesзамени статичку корисну методу, toDashDateјер има само једнократну употребу, односно промену датума у ​​цртице.

Могли бисмо лако користити статичку методу у своју корист тако што ћемо заменити getDate()методу у подкласи тако да добро функционише са DatesWithSlashesкласом.

Занимљиви Чланци...