0Pricing
Python Academy · Ders

Yöntem Geçersiz Kılma ve super()

Üst sınıf yöntemlerini geçersiz kılın ve bunları super() ile çağırın.

Yöntem Geçersiz Kılma ve super(), CoddyKit'te ücretsiz bir Python Academy dersidir. Bu, 4 dersinin 2. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Python Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Python Academy kursu toplamda 4 dersten oluşur.

Giriş

Yöntem geçersiz kılma, alt sınıfların devralınan davranışı özelleştirmesini sağlar. super(), özgün uygulamayı çağırmanızı sağlar.

Geçersiz Kılmanın Temelleri

Alt sınıfın tüm örnekleri için üst sınıfın sürümünü değiştirmek üzere aynı yöntem adını alt sınıfta tanımlayın.
class Greeter:
    def greet(self): return 'Hello'
class FormalGreeter(Greeter):
    def greet(self): return 'Good day'
print(FormalGreeter().greet())

Geçersiz Kılmalarda super()

Alt sınıfın içindeki super().greet(), üst sınıfın sürümünü çağırır. Davranışı tamamen değiştirmek yerine genişletmek için kullanışlıdır.
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')

__init__ İçinde super()

Üst sınıfın başlatmasının çalışmasını sağlamak için alt sınıfın __init__ içinde her zaman super().__init__() çağrısını yapın.
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)

Bağımsız Değişkenlerle super()

super(ChildClass, self), açık biçimdir (Python 2 tarzı). Python 3, çoğu durumda bağımsız değişken olmadan super() kullanımına izin verir.
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())

İş Birlikçi Kalıtım

Birden çok kalıtımda super(), MRO'yu izler. super() çağrısı yapan her sınıf, zincirdeki tüm sınıfların başlatılmasını sağlar.
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()

__str__ Yöntemini Geçersiz Kılma

Örneklerin nasıl yazdırılacağını özelleştirmek için alt sınıfta __str__ yöntemini geçersiz kılın.
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'))

Şablon Yöntemi Deseni

Üst sınıf algoritmanın iskeletini tanımlar; alt sınıf, belirli yöntemleri geçersiz kılarak adımları doldurur.
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())

Kardeş Sınıf Yöntemini Çağırma

super() ve doğru MRO ile birden çok kalıtımda kardeş sınıfın yöntemini çağırabilirsiniz; buna iş birlikçi super() denir.
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__, sınıf her alt sınıflandırıldığında çağrılır. Eklenti kayıt desenleri için kullanışlıdır.
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])

NOT Ne Zaman Geçersiz Kılınmamalı

Davranışı değiştirmeniz gerekmiyorsa geçersiz kılmayın. Gereksiz geçersiz kılmalar bakım yükü oluşturur. İlişkisiz davranışlar için bileşimi tercih edin.
# 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')

Hızlı Denetim

Python 3'te, bir yöntemin içinde super() (bağımsız değişken olmadan) neyi ifade eder?

Özet

Alt sınıfta yeniden tanımlayarak geçersiz kılın. super().method(), üst sınıfın sürümünü çağırır. super().__init__(), üst sınıfı başlatır. İş birlikçi super(), MRO sırasını izler.

Devam Edin

Harika ilerliyorsunuz! Sonraki kavramda ustalaşmak için devam edin.

Sıkça Sorulan Sorular

“Yöntem Geçersiz Kılma ve super()” dersi ücretsiz mi?

Evet — “Yöntem Geçersiz Kılma ve super()” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Python Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Python Academy kursu toplamda 4 dersten oluşur.

“Yöntem Geçersiz Kılma ve super()” dersinde ne öğreneceğim?

Üst sınıf yöntemlerini geçersiz kılın ve bunları super() ile çağırın. Python Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Python Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Python Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 2. dersidir.

“Yöntem Geçersiz Kılma ve super()” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Python Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Python Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Tekli Kalıtım
  2. Yöntem Geçersiz Kılma ve super()
  3. Çoklu Kalıtım ve MRO
  4. Çok Biçimlilik ve Ördek Tiplemesi
← Python Academy Sayfasına Dön