Kaedah statik Python ()

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

Sintaksnya @staticmethodadalah:

 @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 Dateskelas 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 toDashDatedalam Dates.

Ini adalah kaedah statik kerana tidak perlu mengakses sifatnya Datessendiri dan hanya memerlukan parameternya.

Kita juga boleh membuat toDashDatedi luar kelas, tetapi kerana ia hanya berfungsi untuk tarikh, adalah logik untuk menyimpannya di dalam Dateskelas.

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 DatesWithSlashesmengatasi kaedah utiliti statik toDashDatekerana 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 DatesWithSlasheskelas.

Artikel menarik...