前提・実現したいこと
クラス継承において、スーパークラス内のメソッドのみを継承し、サブクラスにおいて変数を変えて継承した当該メソッドを実行したい。
発生している問題・エラーメッセージ
サブクラスBを実行すると、スーパークラスA がそのまま実行されて、続いて追加されて変数の変わったサブクラスB が実行される。即ち下記ソースコードにおいて B("鈴木)の実行結果が、私は鈴木です あなたは鈴木です と二つ出てくる。私としては一つ目不要。
該当のソースコード
class A:
def init(self,name):
self.name=name
self.s="私は"
self.v="です"
self.print1()
def print1(self):
return print(self.s+self.name+self.v)
class B(A):
def init(self,name):
super().init(name)
self.s="あなたは"
self.print2()
def print2(self):
return print(self.s+self.name+self.v)
B("鈴木")
試したこと
とりあえず、色々な場で使いたかったので、上記AのスーパークラスのサブクラスCとして以下のように書いたところ問題解決したが。。v="です"は変更しないのにもう一回定義しなければならんないし。結局スーパークラスのメソッドprint1のコマンドをコピーしているだけ。長いコマンドの場合便利ではあるが。。。釈然としない。
class C:
def init(self,name):
self.name=name
self.s="あなたは"
self.v="です"
self.print3()
def print3(self):
A.print1(self)
C("鈴木")
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー