Metode statis Python ()

Fungsi bawaan staticmethod () mengembalikan metode statis untuk fungsi tertentu.

Sintaksnya staticmethod()adalah:

 metode statis (fungsi)

Menggunakan staticmethod()dianggap sebagai cara yang tidak Pythonic untuk membuat fungsi statis.

Karenanya, dalam versi Python yang lebih baru, Anda dapat menggunakan @staticmethoddekorator.

Sintaksnya @staticmethodadalah:

 @staticmethod def func (args,…)

staticmethod () Parameter

The staticmethod()Metode mengambil parameter tunggal:

  • function - fungsi yang perlu diubah menjadi metode statis

Kembalikan nilai dari staticmethod ()

The staticmethod()pengembalian metode statis untuk fungsi lulus sebagai parameter.

Apa itu metode statis?

Metode statis, seperti metode kelas, adalah metode yang terikat ke kelas daripada objeknya.

Mereka tidak memerlukan pembuatan instance kelas. Jadi, mereka tidak bergantung pada keadaan objeknya.

Perbedaan antara metode statis dan metode kelas adalah:

  • Metode statis tidak tahu apa-apa tentang kelas dan hanya berurusan dengan parameter.
  • Metode kelas bekerja dengan kelas karena parameternya selalu kelas itu sendiri.

Mereka dapat dipanggil baik oleh kelas maupun objeknya.

 Class.staticmethodFunc () atau bahkan Class (). StaticmethodFunc ()

Contoh 1: Buat metode statis menggunakan staticmethod ()

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

Keluaran

 Jumlahnya: 15 

Kapan Anda menggunakan metode statis?

1. Mengelompokkan fungsi utilitas ke kelas

Metode statis memiliki kasus penggunaan terbatas karena, seperti metode kelas atau metode lain di dalam kelas, metode statis tidak dapat mengakses properti kelas itu sendiri.

Namun, jika Anda memerlukan fungsi utilitas yang tidak mengakses properti apa pun dari kelas tetapi masuk akal bahwa itu milik kelas, kami menggunakan fungsi statis.

Contoh 2: Buat fungsi utilitas sebagai metode statis

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

Keluaran

 Sama

Di sini, kami memiliki Dateskelas yang hanya bekerja dengan tanggal dengan tanda hubung. Namun, dalam database kami sebelumnya, semua tanggal ditampilkan dalam garis miring.

Untuk mengubah tanggal garis miring menjadi tanggal tanda pisah, kami telah membuat fungsi utilitas di toDashDatedalamnya Dates.

Ini adalah metode statis karena tidak perlu mengakses propertinya Datessendiri dan hanya memerlukan parameter.

Kita juga dapat membuat di toDashDateluar kelas, tetapi karena ini hanya berfungsi untuk tanggal, logis untuk menyimpannya di dalam Dateskelas.

2. Memiliki implementasi tunggal

Metode statis digunakan ketika kita tidak ingin subclass dari kelas mengubah / mengganti implementasi spesifik dari suatu metode.

Contoh 3: Bagaimana pewarisan bekerja dengan metode statis?

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

Keluaran

 Sama

Di sini, kami tidak ingin subclass DatesWithSlashesmengganti metode utilitas statis toDashDatekarena hanya memiliki satu penggunaan, yaitu mengubah tanggal ke tanggal tanda pisah.

Kita bisa dengan mudah menggunakan metode statis untuk keuntungan kita dengan getDate()mengganti metode di subkelas sehingga bisa bekerja dengan baik dengan DatesWithSlasheskelas.

Artikel yang menarik...