Python入門から応用までの学習サイト


クラス継承

Pythonではクラス継承して、既存クラスを容易に拡張することができます。

親クラスである「Country」を定義し「country_name」属性を保持します。さらに「City」を「Country」クラスを継承して定義し「city_name」属性を保持します。

# -*- coding: utf-8 -*- 

class Country:

    def __init__(self, country_name):
        self.country_name = country_name


class City(Country):

    def __init__(self, country_name, city_name):
        Country.__init__(self, country_name)
        self.city_name = city_name


classes = []
classes.append(City('Japan', 'Tokyo'))
classes.append(City('USA', 'Washington, D.C.'))

for cls in classes:
    print "===== Class ====="
    print 'country_name --> ' + cls.country_name
    print 'city_name --> ' + cls.city_name

--実行結果--

===== Class =====
country_name --> Japan
city_name --> Tokyo
===== Class =====
country_name --> USA
city_name --> Washington, D.C.

既存クラスの継承を行って新たにクラスを定義する場合、クラス名の後に「 () 」を用いてスーパークラス名を記述します(例示コードの場合はCountry、9行目)。また親クラスが持つメソッドと同じ名前のメソッドを定義することができ、その処理内容を上書きすることができます。例示のコードの場合、12行目で親クラスの同名メソッドを呼び出すことにより親が行っている処理をそのまま利用しつつ、子クラス側で独自の処理を追加しています。子クラス側では「country_name」属性に対して値を代入していないにもかかわらずprintで出力できているのも、親クラス側でその処理を行っているからです。

なお本項で示したクラスは「旧スタイルクラス」です。次項の新旧クラススタイルも目を通しておくと良いでしょう。



Python
スタートブック


入門 Python 3


Effective
Python


退屈なことは
Pythonにやらせよう

 
 
 

objectを継承する?しない?



確かな力が身につく
Python「超」入門




P  R