-1
ケース1いCASE1ではのpythonオーバーライド
class A(object):
def __init__(self):
print "A"
class B(A):
def __init__(self):
print "B"
c = b()
#output:
#B
それはclass A
のコンストラクタを実行し、ケース2でそれが実行されますclass B
のコンストラクタです。
case1がAを出力すると、class A
コンストラクタが実行されていると解釈されます。これは、class B
が継承しているためです。
ケース2の場合、class B
コンストラクタのみが実行されますが、class A
コンストラクタが実行されないのはなぜですか。
ここでは何が起こっているのですか? Pythonはclass A
コンストラクタをオーバーライドしていますか?または、何が起こっているのですか? "私はプログラミングに新しいです。"
*初期化子*を上書きしています。親*初期化子*は 'super'を使ってアクセスできます。 –
'B'に' __init__'を入れると、 'A'のものを上書きします。あなたがしなければ、それはしません。 Pythonの '__init__'メソッドは、スーパークラスの' __init__'メソッドを自動的に呼び出すわけではありません。あなたのタイトルに「過負荷」を入れた理由は分かりません。 – khelwood
* "OOPsコンセプトに従って、コンストラクタは継承できません。" * - 誰が言っていますか? – deceze