Python statikus módszer ()

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 @staticmethoddekoratort.

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 Datesosztá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 toDashDatebelü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 toDashDateaz 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 DatesWithSlashesfelülírná a statikus segédprogram metódusát, toDashDatemert 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 DatesWithSlashesosztállyal.

érdekes cikkek...