Cara menggunakan classmethod vs @staticmethod python

The class method in Python is a method, which is bound to the class but not the object of that class. The static methods are also same but there are some basic differences. For class methods, we need to specify @classmethod decorator, and for static method @staticmethod decorator is used.

Syntax for Class Method.

class my_class:
   @classmethod
  deffunction_name(cls, arguments):
      #Function Body
      return value

Syntax for Static Method.

class my_class:
   @staticmethod
   deffunction_name(arguments):
      #Function Body
      return value

What are the differences between Classmethod and StaticMehtod?

Class MethodStatic MethodThe class method takes cls (class) as first argument.The static method does not take any specific parameter.Class method can access and modify the class state.Static Method cannot access or modify the class state.The class method takes the class as parameter to know about the state of that class.Static methods do not know about class state. These methods are used to do some utility tasks by taking some parameters.@classmethod decorator is used here.@staticmethod decorator is used here.

The Static methods are used to do some utility tasks, and class methods are used for factory methods. The factory methods can return class objects for different use cases.

# Resume Konsep OOP **Class vs Instances** 1. Instances di generate oleh class 2. Class hanya satu, instances bisa banyak ## Encapsulation (Cara store data ke dalam sebuah object) **Key Idea** 1. Safe storange data 2. Data hanya boleh diakses dari method yg ada di instances 3. Data akan divalidasi terlebih dahulu oleh method sebelum digunakan didalam class 4. Di Python tidak terdapat data hiding, sehingga walaupun menggunakan method set and get data tetap bisa dimodifikasi dari luar class **Constructor** 1. Di python constructor terdapat pada fungsi __init__(self) 2. Di constructor kita bisa melakukan passing data 3. sebaiknya dilakukan validasi data pada constuctor **Class Attributes vs Instance Attribute** 1. Ketika memanggil attribute, python akan mencari ke instance attribute terlebih dahulu, jika tidak ketemu akan mencari di class attribute ## Inheritance (Turunan class) **Konsep** 1. Class yang dibuat bisa diturunkan menjadi class baru dengan fitur penambahan ## Polymorphism **Konsep** 1. Beberapa class bisa memiliki nama method yang sama, namun akan menjadi independen method antara class yang satu dengan class yang lainnya 2. super() method digunakan untuk memanggil method yang berada pada superclass 3. Python support multiple inheritance ## Method Decorator **Konsep** 1. Special function yang bisa merubah function ```python @classmethod def get_count(cls): return InstanceCounter.count ``` ## Static Method **Konsep** 1. Method yang berfungsi sebagai utility pada class, contoh untuk filtering data ```python @staticmethod def filterint(value): if not isinstance(value, int): return 0 else: return value ``` ## Abstract Class **Konsep** 1. Class dibuat sebagai template untuk class lain yg ingin menurunkan dari class tersebut. Jika class lain tidak menurunkan method yang ada di super class maka akan error

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.

Apa itu static method pada python?

Apa itu static method? Static method di dalam python adalah sebuah fungsi atau method pada sebuah kelas yang bersifat statis. Bersifat statis di sini berarti kita bisa memanggil fungsi tersebut secara langsung tanpa harus membuat instan dari kelas yang bersangkutan.

Apa itu Classmethod?

Apa itu class method pada python? Class method pada python adalah method statis yang disandarkan langsung kepada sebuah kelas, artinya kita bisa memanggil fungsi tersebut tanpa harus membuat objek terlebih dahulu [1].