A staticmethod () beépített függvény statikus metódust ad vissza egy adott függvényhez.
A szintaxisa staticmethod()
:
statikus módszer (függvény)
A használatot staticmethod()
nem Python-féle módnak tekintjük a statikus függvény létrehozásában.
Ezért a Python újabb verzióiban használhatja a @staticmethod
dekoratort.
A szintaxisa @staticmethod
:
@staticmethod def func (args,…)
staticmethod () Paraméterek
A staticmethod()
módszer egyetlen paramétert vesz fel:
- function - függvény, amelyet statikus módszerré kell átalakítani
Visszatérési érték a staticmethodból ()
A staticmethod()
hozamok statikus módszer függvényében átadott paraméter.
Mi a statikus módszer?
A statikus módszerek, hasonlóan az osztályos módszerekhez, olyan módszerek, amelyek inkább egy osztályhoz, mint annak objektumához kötődnek.
Nem igényelnek osztálypéldány-létrehozást. Tehát nem függenek az objektum állapotától.
A statikus és az osztályos módszer közötti különbség a következő:
- A statikus módszer nem tud semmit az osztályról, és csak a paraméterekkel foglalkozik.
- A Class módszer az osztállyal működik, mivel a paramétere mindig maga az osztály.
Az osztály és az objektuma egyaránt hívhatja őket.
Class.staticmethodFunc () vagy akár Class (). StaticmethodFunc ()
1. példa: Statikus módszer létrehozása staticmethod () használatával
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))
Kimenet
Összege: 15
Mikor használ statikus módszereket?
1. A segédprogram függvény csoportosítása egy osztályhoz
A statikus módszereknek korlátozott esete van, mivel az osztály metódusaihoz vagy az osztályon belüli bármely más módszerhez hasonlóan nem férhetnek hozzá az osztály tulajdonságaihoz.
Ha azonban olyan segédfunkcióra van szüksége, amely nem fér hozzá egy osztály tulajdonságaihoz, de van értelme az osztályhoz tartozónak, akkor statikus függvényeket használunk.
2. példa: Hozzon létre segédfunkciót statikus módszerként
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")
Kimenet
Egyenlő
Itt van egy Dates
osztályunk, amely csak kötőjeles dátumokkal működik. Előző adatbázisunkban azonban minden dátum perjelben szerepelt.
A perjel-dátumok dash-dátumokká alakításához létrehoztunk egy segédfunkciót ezen toDashDate
belül Dates
.
Ez egy statikus módszer, mert nem kell hozzá semmilyen tulajdonsághoz hozzáférnie Dates
, és csak a paramétereket igényli.
Létrehozhatunk toDashDate
az osztályon kívül is , de mivel csak dátumokra működik, logikus, ha az órán belül tartjuk Dates
.
2. Egyetlen megvalósítás
A statikus módszereket akkor alkalmazzuk, amikor nem akarjuk, hogy egy osztály alosztályai megváltoztassák / felülírják a módszer konkrét megvalósítását.
3. példa: Hogyan működik az öröklés statikus módszerrel?
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")
Kimenet
Egyenlő
Itt nem szeretnénk, ha az alosztály DatesWithSlashes
felülírná a statikus segédprogram metódusát, toDashDate
mert csak egyszer használatos, azaz a dátumot kötőjel-dátumra változtatja.
Könnyen használhatnánk a statikus módszert előnyünkre azzal, hogy felülírjuk a getDate()
módszert az alosztályban, hogy az jól működjön az DatesWithSlashes
osztállyal.