Class Method
Method objek yang telah kita lihat sejauh ini dipanggil dengan sebuah instance sebuah class, dimana kemudian diteruskan ke dalam parameter self pada method. Class method adalah sesuatu yang berbeda. Class method dipanggil oleh sebuah class, dimana kemudian diteruskan ke dalam parameter cls pada method.
Sebuah penggunaan umum dari class method adalah method bawaan, dimana menginstansiasi sebuah insance pada sebuah class, menggunakan parameter-parameter yang berbeda daripada yang biasanya diteruskan ke class constructor.
Class method ditandai dengan sebuah decorator @classmethod.
class PersegiPanjang:
def __init__(self, lebar, tinggi):
self.lebar = lebar
self.tinggi = tinggi
def kalkulasi(self):
return self.lebar * self.tinggi
@classmethod
def kotak_baru(cls, sisi):
return cls(sisi, sisi)
kotak = PersegiPanjang.kotak_baru(5)
print(kotak.kalkulasi())
=====>
25
=====>
kotak_baru adalah sebuah class method dan dipanggil di dalam class, bukan dari sebuah instance class. Class method tersebut mengembalikan sebuah objek baru pada class cls.
Secara teknis, parameter self dan cls hanya sebuah kebiasaan. Parameter tersebut dapat diganti dengan apapun. Bagaimanapun juga, parameter tersebut diikuti dan digunakan secara universal.
Static Method
Static method mirip dengan class method, tetapi tidak menerima argumen tambahan. Static method identik kepada fungsi-fungsi normal yang dimiliki sebuah class.
Static method ditandai dengan decorator @staticmethod.
class Pizza:
def __init__(self, toppings):
self.toppings = toppings
@staticmethod
def validasi_topping(topping):
if topping == "nanas":
raise ValueError("Tidak ada nanas!")
else:
return True
komposisi = ["keju", "bawang", "spam"]
if all(Pizza.validasi_topping(i) for i in komposisi):
pizza = Pizza(komposisi)
Static method berperilaku seperti fungsi biasa, kecuali untuk fakta bahwa kita dapat memanggilnya dari sebuah objek / instance sebuah class.
LANJUTKAN BACA MATERI LENGKAP