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())

Coba di IDE

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)

Coba di IDE

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())

Coba di IDE

Output:

11100

Melihat urutan pewarisan

class A:
    pass

class B(A):
    pass

print([c.__name__ for c in B.__mro__])

Coba di IDE

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