Skip to main content

Dunder Methods

Dunder Methods merupakan singkatan dari Double Underscore, yaitu method khusus yang memiliki dua tanda underscore di awal dan di akhir namanya.

Contohnya:

__str__
__len__
__call__
__getitem__

Dunder methods merupakan bagian khusus dari Python yang memungkinkan kita menyesuaikan perilaku object dari class yang kita buat.

Dengan dunder methods, object buatan kita dapat merespons fungsi atau operasi bawaan Python dengan cara yang kita tentukan sendiri.


Apa Itu Dunder Methods?​

Dunder method memiliki pola penamaan:

__nama__

Contohnya:

__str__

Nama tersebut terdiri dari:

__ + str + __

Dunder methods memiliki arti khusus bagi Python.

Kita dapat mengimplementasikan dunder methods tertentu di dalam class untuk mengubah perilaku object ketika digunakan dengan fungsi atau operasi bawaan Python.


Mengapa Dunder Methods Digunakan?​

Secara default, Python sudah memiliki perilaku tertentu ketika kita menggunakan fungsi atau operator terhadap sebuah object.

Misalnya:

print(action_figure)

Python akan menggunakan mekanisme bawaan untuk menampilkan representasi object tersebut.

Dengan dunder method seperti __str__(), kita dapat menentukan sendiri bagaimana object tersebut ditampilkan.

Hal yang sama berlaku untuk fungsi atau operasi lain seperti:

len(action_figure)

atau:

action_figure()

atau:

action_figure["name"]

Contoh Class dengan Dunder Methods​

Berikut contoh class yang menggunakan beberapa dunder methods:

class ActionFigure:

def __init__(self, color, age):
self.color = color
self.age = age
self.my_dict = {
"name": "Yoji",
"has_pets": False
}

def __str__(self):
return f"{self.color}"

def __len__(self):
return 5

def __call__(self):
return "yess?"

def __getitem__(self, i):
return self.my_dict[i]

Kemudian kita membuat object:

action_figure = ActionFigure("red", 10)

Sekarang kita dapat menggunakan beberapa fungsi dan operasi Python terhadap object tersebut.


Dunder Method __str__()​

Method __str__() digunakan untuk menentukan representasi string dari sebuah object ketika object tersebut dikonversi menjadi string.

Contoh:

class ActionFigure:

def __init__(self, color, age):
self.color = color
self.age = age

def __str__(self):
return self.color

Kemudian:

action_figure = ActionFigure("red", 10)

print(action_figure)

Output:

red

Tanpa implementasi __str__(), Python akan menggunakan representasi string bawaan dari object.


Dunder Method __len__()​

Method __len__() digunakan untuk menentukan perilaku object ketika digunakan dengan fungsi len().

Contoh:

class ActionFigure:

def __len__(self):
return 5

Kemudian:

action_figure = ActionFigure()

print(len(action_figure))

Output:

5

Python akan memanggil __len__() ketika kita menggunakan:

len(action_figure)

Dunder Method __call__()​

Method __call__() memungkinkan sebuah object dipanggil seperti sebuah function.

Contoh:

class ActionFigure:

def __call__(self):
return "yess?"

Kemudian:

action_figure = ActionFigure()

print(action_figure())

Output:

yess?

Perhatikan bahwa:

action_figure()

terlihat seperti pemanggilan function.

Namun sebenarnya action_figure merupakan sebuah object.

Python akan menjalankan:

action_figure.__call__()

Dunder Method __getitem__()​

Method __getitem__() digunakan untuk menentukan perilaku object ketika diakses menggunakan tanda kurung siku [].

Contoh:

class ActionFigure:

def __init__(self):
self.my_dict = {
"name": "Yoji",
"has_pets": False
}

def __getitem__(self, i):
return self.my_dict[i]

Kemudian:

action_figure = ActionFigure()

print(action_figure["name"])

Output:

Yoji

Ketika kita menulis:

action_figure["name"]

Python akan menggunakan method:

action_figure.__getitem__("name")

Contoh Lengkap​

Berikut contoh lengkap penggunaan beberapa dunder methods:

class ActionFigure:

def __init__(self, color, age):
self.color = color
self.age = age
self.my_dict = {
"name": "Yoji",
"has_pets": False
}

def __str__(self):
return f"{self.color}"

def __len__(self):
return 5

def __call__(self):
return "yess?"

def __getitem__(self, i):
return self.my_dict[i]


action_figure = ActionFigure("red", 10)

print(str(action_figure))
print(len(action_figure))
print(action_figure())
print(action_figure["name"])

Output:

red
5
yess?
Yoji

Hubungan Operasi Python dengan Dunder Methods​

Dunder methods memungkinkan kita menghubungkan operasi umum Python dengan perilaku object.

OperasiDunder Method
str(object)__str__()
len(object)__len__()
object()__call__()
object[index]__getitem__()

Dengan demikian, kita dapat menyesuaikan bagaimana object buatan kita berinteraksi dengan fitur bawaan Python.


Dunder Methods dan Custom Behavior​

Salah satu tujuan utama dunder methods adalah memberikan custom behavior pada class.

Tanpa dunder method, object menggunakan perilaku standar Python.

Dengan dunder method, kita dapat menentukan perilaku tersebut sesuai kebutuhan.

Contohnya:

class ActionFigure:

def __str__(self):
return "Action Figure"

Sekarang:

action_figure = ActionFigure()

print(action_figure)

akan menghasilkan:

Action Figure

Kita telah mengubah perilaku standar representasi object.


Dunder Methods Bukan Method Biasa​

Dunder methods berbeda dengan method biasa.

Method biasa dapat dibuat dengan nama sesuai kebutuhan:

class User:

def attack(self):
print("attacking")

Sedangkan dunder methods memiliki nama dan fungsi khusus yang sudah ditentukan oleh Python:

__str__
__len__
__call__
__getitem__

Karena itu, dunder methods sebaiknya digunakan sesuai dengan fungsi yang telah ditentukan oleh Python.


Beberapa Dunder Methods yang Umum​

Python memiliki banyak dunder methods.

Beberapa di antaranya:

Dunder MethodFungsi Umum
__init__()Menginisialisasi object
__str__()Representasi string object
__repr__()Representasi object untuk developer
__len__()Menentukan perilaku len()
__call__()Membuat object dapat dipanggil seperti function
__getitem__()Menentukan perilaku akses menggunakan []
__setitem__()Menentukan perilaku assignment menggunakan []
__eq__()Menentukan perilaku operator ==
__lt__()Menentukan perilaku operator <

Tidak semua dunder methods harus digunakan dalam setiap class.

Gunakan dunder method sesuai kebutuhan class yang sedang dibuat.


Aturan Penting Penggunaan Dunder Methods​

Dunder methods merupakan bagian dari protokol khusus Python.

Karena itu, hindari membuat nama method sendiri dengan pola:

__nama__

jika nama tersebut bukan dunder method yang memang memiliki arti khusus dalam Python.

Contoh:

def __my_method__(self):
pass

Sebaiknya dihindari karena nama dengan format tersebut dapat bertabrakan dengan mekanisme khusus Python.

Gunakan dunder methods yang memang telah didefinisikan dan didukung oleh Python.


Kesimpulan​

Dunder Methods adalah method khusus Python yang memiliki dua underscore di awal dan di akhir nama.

Contohnya:

__str__
__len__
__call__
__getitem__

Dunder methods memungkinkan kita menyesuaikan perilaku object yang dibuat menggunakan class.

Beberapa contoh:

print(action_figure)

menggunakan:

__str__()

Sedangkan:

len(action_figure)

menggunakan:

__len__()

Kemudian:

action_figure()

menggunakan:

__call__()

Dan:

action_figure["name"]

menggunakan:

__getitem__()

Dengan memahami dunder methods, kita dapat membuat class yang berinteraksi lebih natural dengan fitur dan operasi bawaan Python.