Pythonにおけるsuper()メソッドの使用

1050 ワード

サブクラスでコンストラクタも定義されている場合は、init_()関数ですが、ベースクラスのコンストラクタはどのように呼び出されますか?
方法1.サブクラスのインスタンスを使用してベースクラスを呼び出すコンストラクタを明確に指定し、サブクラスのコンストラクタでベースクラスを呼び出すコンストラクタを明確に指定する.
class  C(P):
...     def __init__(self):
...             P.__init__(self)
...             print 'calling Cs construtor'

メソッド2、super()メソッドを使用するsuper()メソッドの美しさは、サブクラスコンストラクタを定義する際に、サブクラスのベースクラスを明確に指定し、明示的に呼び出す必要がないことです.つまり、親を明確に提供する必要がないことです.このようなメリットは、継承された親を変更した場合、コード行を1行修正するだけで、多くのコードで変更するベースクラスを検索する必要はありません.一方,コードの移植性と再利用性も高い.
>>> class  C(P):
...     def __init__(self):
...             super(C,self).__init__()
...             print 'calling Cs construtor'
... 
>>> c=C()

以上のコードのPはCの親です.