0Pricing
Python Academy · Pelajaran

Penggantian Method dan super()

Ganti method class induk dan panggil dengan super().

Penggantian Method dan super() adalah pelajaran Python Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Python Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Python Academy mencakup 4 pelajaran total.

Pendahuluan

Penimpaan metode memungkinkan kelas turunan menyesuaikan perilaku yang diwarisi. super() memungkinkan Anda memanggil implementasi asli.

Dasar-Dasar Penimpaan

Definisikan nama metode yang sama di kelas turunan untuk menggantikan versi milik induk bagi semua instans kelas turunan.
class Greeter:
    def greet(self): return 'Hello'
class FormalGreeter(Greeter):
    def greet(self): return 'Good day'
print(FormalGreeter().greet())

super() dalam Penimpaan

super().greet() di dalam kelas turunan memanggil versi milik induk. Ini berguna untuk memperluas, bukan sepenuhnya mengganti, perilaku.
class Logger:
    def log(self, msg): print(f'[LOG] {msg}')
class TimedLogger(Logger):
    def log(self, msg):
        import time
        super().log(f'{time.time():.0f}: {msg}')
TimedLogger().log('test')

super() dalam __init__

Selalu panggil super().__init__() dalam __init__ milik kelas turunan untuk memastikan inisialisasi induk dijalankan.
class Animal:
    def __init__(self, name): self.name = name
class Cat(Animal):
    def __init__(self, name, indoor):
        super().__init__(name)
        self.indoor = indoor
cat = Cat('Whiskers', True)
print(cat.name, cat.indoor)

super() dengan Argumen

super(ChildClass, self) adalah bentuk eksplisitnya (gaya Python 2). Python 3 memungkinkan super() tanpa argumen dalam sebagian besar kasus.
class A:
    def greet(self): return 'A'
class B(A):
    def greet(self): return super().greet() + 'B'
class C(B):
    def greet(self): return super().greet() + 'C'
print(C().greet())

Pewarisan Kooperatif

Dalam pewarisan berganda, super() mengikuti MRO. Setiap kelas yang memanggil super() memastikan semua kelas dalam rantai diinisialisasi.
class A:
    def __init__(self): print('A init')
class B(A):
    def __init__(self): super().__init__(); print('B init')
class C(A):
    def __init__(self): super().__init__(); print('C init')
class D(B, C):
    def __init__(self): super().__init__(); print('D init')
D()

Menimpa __str__

Timpa __str__ di kelas turunan untuk menyesuaikan cara instans ditampilkan.
class Animal:
    def __init__(self, name): self.name = name
    def __str__(self): return f'Animal: {self.name}'
class Dog(Animal):
    def __str__(self): return f'Dog: {self.name}'
print(Dog('Rex'))

Pola Metode Templat

Induk mendefinisikan kerangka algoritme; turunan mengisi langkah-langkahnya dengan menimpa metode tertentu.
class DataProcessor:
    def process(self):
        data = self.load()
        return self.transform(data)
    def load(self): return [1,2,3]
    def transform(self, d): return d
class Doubler(DataProcessor):
    def transform(self, d): return [x*2 for x in d]
print(Doubler().process())

Memanggil Metode Saudara

Dengan super() dan MRO yang tepat, Anda dapat memanggil metode kelas saudara dalam pewarisan berganda—ini disebut super() kooperatif.
class A:
    def hello(self): print('A')
class B(A):
    def hello(self): super().hello(); print('B')
class C(A):
    def hello(self): super().hello(); print('C')
class D(B,C):
    def hello(self): super().hello(); print('D')
D().hello()

__init_subclass__

__init_subclass__ dipanggil setiap kali kelas dijadikan subkelas. Ini berguna untuk pola pendaftaran plugin.
class Plugin:
    registry = []
    def __init_subclass__(cls, **kw):
        super().__init_subclass__(**kw)
        Plugin.registry.append(cls)
class A(Plugin): pass
class B(Plugin): pass
print([c.__name__ for c in Plugin.registry])

Kapan TIDAK Menimpa

Jangan menimpa jika Anda tidak perlu mengubah perilaku. Penimpaan yang tidak diperlukan menambah beban pemeliharaan. Pilih komposisi untuk perilaku yang tidak berkaitan.
# Good: only override what's needed
class Dog(Animal):
    def speak(self): return 'Woof'
    # No need to override __init__ if parent's is fine
print('override guidance')

Pemeriksaan Singkat

Dalam Python 3, apa yang dirujuk oleh super() (tanpa argumen) di dalam sebuah metode?

Ringkasan

Lakukan penimpaan dengan mendefinisikan ulang metode di kelas turunan. super().method() memanggil versi induk. super().__init__() menginisialisasi induk. super() kooperatif mengikuti urutan MRO.

Lanjutkan

Kemajuan Anda luar biasa! Teruskan untuk menguasai konsep berikutnya.

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Penggantian Method dan super()” gratis?

Ya — teks lengkap “Penggantian Method dan super()” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Python Academy, upgrade ke CoddyKit PRO. Kursus Python Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Penggantian Method dan super()”?

Ganti method class induk dan panggil dengan super(). Kamu berlatih Python Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Python Academy?

Tidak diperlukan pengalaman sebelumnya. Python Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Penggantian Method dan super()” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Python Academy ini?

Ya. Setiap pelajaran Python Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Pewarisan Tunggal
  2. Penggantian Method dan super()
  3. Pewarisan Ganda dan MRO
  4. Polimorfisme dan Duck Typing
← Kembali ke Python Academy