カランPythonの基本チュートリアル - 第8章:Pythonのクラスとオブジェクト(E)多重継承とスーパー機能

I CSDNブログコラム:HTTPS://blog.csdn.net/yty_7
Githubの住所ます。https://github.com/yot777/Python-Primary-Learning

 

8.5 多重継承とスーパー機能

スーパー機能は、前に親クラスのメソッド呼び出しの役割を発生しています。単一継承、理解しやすいですが、私たちは、特に時間の「ダイヤモンドの継承」に、注意を払う必要が多重継承。

Pythonの多重継承の例(親クラス名を使用して):

class Base:
  def __init__(self):
    print('This is Base init function')
#A单继承自Base类
class A(Base):
  def __init__(self):
    Base.__init__(self)
    print('This is init function of A')
#B单继承自Base类
class B(Base):
  def __init__(self):
    Base.__init__(self)
    print('This is init function of B')
#C多继承自A类和B类
class C(A,B):
  def __init__(self):
    A.__init__(self)
    B.__init__(self)
    print('This is init function of C')
#实例化一个C类的对象c
c = C()

运行结果:
This is Base init function
This is init function of A
This is Base init function
This is init function of B
This is init function of C

Pythonの多重継承の例(使用してスーパー機能):

class Base:
  def __init__(self):
    print('This is Base init function')
#A单继承自Base类
class A(Base):
  def __init__(self):
    super().__init__()
    print('This is init function of A')
#B单继承自Base类
class B(Base):
  def __init__(self):
    super().__init__()
    print('This is init function of B')
#C多继承自A类和B类
class C(A,B):
  def __init__(self):
    super().__init__()
    print('This is init function of C')
#实例化一个C类的对象c
c = C()

运行结果:
This is Base init function
This is init function of B
This is init function of A
This is init function of C

同じことがあるC から多重継承クラスとBの使用なぜ、クラスのスーパー機能の実行結果が同じではないのですか?これは理解関係のPythonにMROの原則(:メソッド解決順序メソッド解決順序をそれぞれが定義されたクラスに向け、Pythonは計算しますMROのリストを。

 

使用せずに、スーパー時間関数を、各クラスに一つだけの親クラスに配置されています

C A ベースC B 基本メソッド呼び出し、逆

ベースA C ベースB C ベースコール2回)

 

使用するスーパー:あなたがアップし、すべてのクラスのルートクラスを見つけるまで、すべての基底クラスの右トラバーサル左から、時間関数を配置C A B ベースを

ていないからA 点に直接クラスベース、そうでなければ見逃しBのクラス]

そして、逆のメソッドを呼び出します。

ベースB A C 塩基呼び出し回のみ)

 

リファレンスチュートリアル:

Pythonのチュートリアルの遼雪峰

https://www.liaoxuefeng.com/wiki/1016959663602400

遼雪峰のJavaチュートリアル

https://www.liaoxuefeng.com/wiki/1252599548343744

python3チュートリアル|チュートリアル新人
https://www.runoob.com/python3/
 

あなたはBenpianの章では、歓迎の注意をあなたを助けていると感じた場合は、コメント、親指アップ!Githubのは、あなたが、スターをフォロー歓迎します!
 

公開された25元の記事 ウォンの賞賛3 ビュー2107

おすすめ

転載: blog.csdn.net/yty_7/article/details/104218808