メソッドのオーバーライドと super()
親クラスのメソッドをオーバーライドし、super() で呼び出します。
「メソッドのオーバーライドと super()」はCoddyKit上の無料Python Academyレッスンです。 これはレッスン2/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはPython Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Python Academyコースには全4レッスンが含まれています。
導入
オーバーライドの基本
class Greeter:
def greet(self): return 'Hello'
class FormalGreeter(Greeter):
def greet(self): return 'Good day'
print(FormalGreeter().greet())オーバーライドでのsuper()
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__でのsuper()
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()
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())協調的な継承
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__のオーバーライド
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'))テンプレートメソッドパターン
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())兄弟クラスのメソッドの呼び出し
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__
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])オーバーライドしない場合
# 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')確認問題
復習
続けましょう
AI チューターと学ぶ Python — 無料
ブラウザでリアルコードを書いて実行し、24/7 の AI チューターから瞬時にサポートを受け、ウェブまたはアプリで続きから学習できます。
- コース
- 76
- レッスン
- 320
よくある質問
「メソッドのオーバーライドと super()」レッスンは無料ですか?
はい。「メソッドのオーバーライドと super()」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Python Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Python Academyコースには全4レッスンが含まれています。
「メソッドのオーバーライドと super()」で何を学びますか?
親クラスのメソッドをオーバーライドし、super() で呼び出します。 ブラウザで直接実行するハンズオンコードでPython Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Python Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのPython Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン2/4です。
「メソッドのオーバーライドと super()」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このPython Academyレッスンでコードを書いて実行できますか?
はい。すべてのPython Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 単一継承
- メソッドのオーバーライドと super()
- 多重継承と MRO
- ポリモーフィズムとダックタイピング