Metode staticmode () fungsi mengembalikan kaedah statik untuk fungsi tertentu.
Sintaksnya staticmethod()
adalah:
kaedah statik (fungsi)
Menggunakan staticmethod()
dianggap sebagai kaedah un-Pythonic untuk membuat fungsi statik.
Oleh itu, dalam versi Python yang lebih baru, anda boleh menggunakan @staticmethod
penghias.
Sintaksnya @staticmethod
adalah:
@staticmethod def func (berpendapat,…)
kaedah statik () Parameter
The staticmethod()
Cara mengambil parameter tunggal:
- fungsi - fungsi yang perlu ditukar kepada kaedah statik
Nilai pulangan dari kaedah statik ()
The staticmethod()
pulangan kaedah statik untuk fungsi yang diluluskan sebagai parameter.
Apakah kaedah statik?
Kaedah statik, seperti kaedah kelas, adalah kaedah yang terikat pada kelas dan bukannya objeknya.
Mereka tidak memerlukan pembuatan contoh kelas. Jadi, mereka tidak bergantung pada keadaan objek.
Perbezaan antara kaedah statik dan kaedah kelas adalah:
- Kaedah statik tidak mengetahui apa-apa mengenai kelas dan hanya membincangkan parameternya.
- Kaedah kelas berfungsi dengan kelas kerana parameternya selalu kelas itu sendiri.
Mereka boleh dipanggil oleh kelas dan objeknya.
Class.staticmethodFunc () atau bahkan Class (). StaticmethodFunc ()
Contoh 1: Buat kaedah statik menggunakan kaedah statik ()
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))
Pengeluaran
Jumlahnya ialah: 15
Bilakah anda menggunakan kaedah statik?
1. Mengumpulkan fungsi utiliti ke kelas
Kaedah statik mempunyai kes penggunaan terhad kerana, seperti kaedah kelas atau kaedah lain dalam kelas, mereka tidak dapat mengakses sifat kelas itu sendiri.
Walau bagaimanapun, apabila anda memerlukan fungsi utiliti yang tidak mengakses sifat kelas tetapi masuk akal dalam kelas, kami menggunakan fungsi statik.
Contoh 2: Buat fungsi utiliti sebagai kaedah statik
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")
Pengeluaran
Sama
Di sini, kita mempunyai Dates
kelas yang hanya berfungsi dengan tarikh dengan tanda sempang. Walau bagaimanapun, dalam pangkalan data kami sebelumnya, semua tarikh terdapat dalam garis miring.
Untuk menukar tarikh garis miring menjadi tarikh sempang, kami telah membuat fungsi utiliti toDashDate
dalam Dates
.
Ini adalah kaedah statik kerana tidak perlu mengakses sifatnya Dates
sendiri dan hanya memerlukan parameternya.
Kita juga boleh membuat toDashDate
di luar kelas, tetapi kerana ia hanya berfungsi untuk tarikh, adalah logik untuk menyimpannya di dalam Dates
kelas.
2. Mempunyai satu pelaksanaan
Kaedah statik digunakan ketika kita tidak ingin subkelas perubahan kelas / menimpa pelaksanaan kaedah tertentu.
Contoh 3: Bagaimana warisan berfungsi dengan kaedah statik?
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")
Pengeluaran
Sama
Di sini, kami tidak mahu subkelas DatesWithSlashes
mengatasi kaedah utiliti statik toDashDate
kerana ia hanya mempunyai satu penggunaan, iaitu menukar tarikh menjadi tanda sempit.
Kita boleh menggunakan kaedah statik untuk keuntungan kita dengan mudah menggunakan kaedah penggantian getDate()
dalam subkelas sehingga berfungsi dengan baik di DatesWithSlashes
kelas.