60. PYTHON (OOP) – Class & Static Method

Belajar Bahasa Python Lengkap

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


Leave a Reply

Your email address will not be published.

This site uses Akismet to reduce spam. Learn how your comment data is processed.