Python Language
メソッドオーバーライド
サーチ…
基本的なメソッドのオーバーライド
Pythonの基本的なオーバーライドの例を示します(Python 2とPython 3との互換性と明快さのため、 新しいスタイルクラスとprint
with ()
)。
class Parent(object):
def introduce(self):
print("Hello!")
def print_name(self):
print("Parent")
class Child(Parent):
def print_name(self):
print("Child")
p = Parent()
c = Child()
p.introduce()
p.print_name()
c.introduce()
c.print_name()
$ python basic_override.py
Hello!
Parent
Hello!
Child
Child
クラスが作成されると、 Parent
クラスのメソッドを継承します。これは、親クラスが持つどのメソッドも、その子クラスも持つことを意味します。例では、 introduce
のために定義されたChild
、それが定義されているため、クラスParent
のクラス定義で明示的に定義されていないにも関わらず、 Child
。
この例では、 Child
が独自のprint_name
メソッドを定義するときにオーバーライドが発生します。このメソッドが宣言されなかった場合、 c.print_name()
は"Parent"
ます。しかし、 Child
はprint_name
のParent
の定義をオーバーライドしています。 print_name
、 c.print_name()
を呼び出すと、 "Child"
という単語が表示されます。
Modified text is an extract of the original Stack Overflow Documentation
ライセンスを受けた CC BY-SA 3.0
所属していない Stack Overflow