3

私はPythonでクラスの継承を理解しようとしており、以下の継承を作成しました.

質問: クラス B を継承してメソッド A を呼び出すと、"Im method B" と出力されます..クラス A の methodA を呼び出しませんか?

class A(object):
    def methodA(self):
        print 'Im method A'


class B(A):
    def methodA(self):
        print 'Im method B'    

class C(A):
    def methodA(self):
        print 'Im method C'    

class D(B,C):
    def methodA(self):
        print 'Im method D'            
def main():
    x = D()
    x.methodA()
4

2 に答える 2

5

いいえ、オーバーライドしているメソッドを呼び出したい場合は、次のコマンドを使用して手動で呼び出す必要がありますsuper

class B(A):
    def methodA(self):
        super(B, self).methodA()
        print 'Im method B' 
于 2013-03-05T19:29:24.193 に答える
1

いいえ。Python メソッドはデフォルトで暗黙的に仮想です。これは、対応するサブクラス メソッドによって常にオーバーライドされることを意味します。

于 2013-03-05T19:37:05.500 に答える