Raspberry Pi 3 & Python 開発ブログ☆彡

Raspberry Pi 3の使い方、設定をわかりやすく解説。Raspberry Pi3 Model B(Element14版)、Raspbian 8.0(NOOBS Ver1.9.2)を使用して開発中。

【スポンサーリンク】

Pythonプログラム入門(クラスの継承)

【スポンサーリンク】

今回はクラスの継承について紹介したいと思います。クラス名の後に継承したいクラス名を書くことで、継承することができます。MyClassAを継承したMyClassBをサンプルで作成しました。

 

クラスの継承

class MyClassA(object):
    def __init__(self):
        self.nameA = ""

    def getNameA(self):
        return self.nameA

    def setNameA(self, name):
        self.nameA = name

class MyClassB(MyClassA):
    """A simple example class"""

    def _init_(self):
        MyClassA._init_(self)
        self.nameB =""

    def getNameB(self):
        return self.nameB

    def setNameB(self, name):
        self.nameB = name

a = MyClassB()
a.setNameA("A")
print a.getNameA()
a.setNameB("B")
print a.getNameB()

MyClassBはMyClassAを継承していますので、MyClassBからMyClassAのメゾットを使うことができます。もちろんMyClassBのメゾットも使うことができます。

 

オーバーライド

下記のようにスーパークラスと同じメゾット名、引数のメゾットをサブクラスで作成するとオーバーライドすることができます。

class MyClassA(object):
    """A simple example class"""

    def __init__(self):
        self.nameA = ""

    def getNameA(self):
        return self.nameA

    def setNameA(self, name):
        self.nameA = name

class MyClassB(MyClassA):

    def _init_(self):
        MyClassA._init_(self)

    def setNameA(self, name):
        self.nameA = "override:" + name

a = MyClassB()
a.setNameA("A")
print a.getNameA()

 

実行結果はoverride:Aと表示されます。スーパークラスとサブクラスの両方にsetNameA関数がありますが、オーバーライドされているため、サブクラスのsetNameA関数が実行されます。