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 @staticmethod
dekorator.
Sintaksnya @staticmethod
adalah:
@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 Dates
kelas 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 toDashDate
dalamnya Dates
.
Ini adalah metode statis karena tidak perlu mengakses propertinya Dates
sendiri dan hanya memerlukan parameter.
Kita juga dapat membuat di toDashDate
luar kelas, tetapi karena ini hanya berfungsi untuk tanggal, logis untuk menyimpannya di dalam Dates
kelas.
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 DatesWithSlashes
mengganti metode utilitas statis toDashDate
karena 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 DatesWithSlashes
kelas.