ブログ管理者のP.Hです!
今回はクラスの継承について紹介したいと思います。クラス名の後に継承したいクラス名を書くことで、継承することができます。
MyClassAを継承したMyClassBを作るサンプルコードになります。
クラスの継承
class MyClassA: def __init__(self): self.nameA = "" def get_nameA(self): return self.nameA def set_nameA(self, name): self.nameA = name class MyClassB(MyClassA): # MyClassAを継承 def _init_(self): MyClassA._init_(self) self.nameB ="" def get_nameB(self): return self.nameB def set_nameB(self, name): self.nameB = name a = MyClassB() a.set_nameA("A") # MyClassAを継承しているので、MyClassAの変数、メゾットを使用することができる print(a.get_nameA()) a.set_nameB("B") # MyClassBの変数、メゾットも使用できる print(a.get_nameB())
MyClassBはMyClassAを継承していますので、MyClassBからMyClassAのメゾットを使うことができます。もちろんMyClassBのメゾットも使うことができます。
オーバーライド
下記のようにスーパークラスと同じメゾット名、引数のメゾットをサブクラスで作成するとオーバーライドすることができます。
class MyClassA: def __init__(self): self.nameA = "" def get(self): return self.nameA def set(self, name): self.nameA = name class MyClassB(MyClassA): # MyClassAを継承 def _init_(self): MyClassA._init_(self) # スーパークラスの初期化 def set(self, name): # MyClassAのsetメゾットをオーバーライド。こちらのメゾットが使われる。 self.nameA = "override:" + name a = MyClassB() a.set("A") # オーバーライドしたsetメゾット print(a.get()) # MyClassAを継承しているので、MyClassAのgetメゾットも使用できる
実行結果はoverride:Aと表示されます。スーパークラスとサブクラスの両方にset関数がありますが、オーバーライドされているため、サブクラスのset関数が実行されます。