Daftar Referensi Python
super() memberikan akses ke method milik class induk sesuai urutan pewarisan (MRO), tanpa menulis nama class induk secara langsung.
Sintaks
super()
super(type, object_or_type=None)
Parameter
| Parameter | Wajib? | Keterangan |
|---|---|---|
type |
Tidak | Class awal pencarian pada bentuk eksplisit |
object_or_type |
Tidak | Instance atau subclass yang menentukan MRO |
Nilai balik: objek proxy yang meneruskan pencarian atribut ke class berikutnya dalam MRO.
Contoh
class Hewan:
def suara(self):
return "suara hewan"
class Kucing(Hewan):
def suara(self):
return super().suara() + " - meong"
print(Kucing().suara())
Output:
suara hewan - meong
Contoh Lainnya
Meneruskan constructor
class Pengguna:
def __init__(self, nama):
self.nama = nama
class Admin(Pengguna):
def __init__(self, nama, level):
super().__init__(nama)
self.level = level
admin = Admin("Ayu", 2)
print(admin.nama, admin.level)
Output:
Ayu 2
Memperluas hasil method
class Harga:
def total(self):
return 10000
class HargaPajak(Harga):
def total(self):
return super().total() + 1100
print(HargaPajak().total())
Output:
11100
Melihat urutan pewarisan
class A:
pass
class B(A):
pass
print([c.__name__ for c in B.__mro__])
Output:
['B', 'A', 'object']
Kesalahan Umum
super()tanpa argumen hanya bekerja di dalam method yang memiliki konteks class.- Lupa memanggil
super().__init__()dapat membuat atribut induk belum tersedia. - Pada multiple inheritance,
super()mengikuti MRO, bukan selalu satu class induk tertentu.
Pelajari Lebih Lanjut
- Referensi: Class dan object · staticmethod() · classmethod()
- Buku Belajar Python untuk Pemula: Bab 5, Bab 7, dan Bab 16
