TECH I.S.

Pythonの継承


Pythonの継承

継承により、別のクラスからすべてのメソッドとプロパティを継承するクラスを定義できます。

親クラスは継承元のクラスであり、基底クラスとも呼ばれます。

子クラスは、別のクラスを継承するクラスであり、派生クラスとも呼ばれます。


親クラスを作成する

どのクラスも親クラスになることができるため、構文は他のクラスを作成する場合と同じです。

firstnameプロパティとlastnameプロパティ、およびprintnameメソッドを備えたPersonという名前のクラスを作成します。
class Person:   def __init__(self, fname, lname):     self.firstname = fname     self.lastname = lname   def printname(self):     print(self.firstname, self.lastname) # Personクラスを使用してオブジェクトを作成し、printnameメソッドを実行します。 x = Person("ジョン", "ドゥ") x.printname()


子クラスを作成する

別のクラスから機能を継承するクラスを作成するには、子クラスを作成時に親クラスをパラメーターとして送信します。

Studentという名前のクラスを作成します。このクラスは、Personクラスからプロパティとメソッドを継承します。
class Student(Person):   pass

注意:他のプロパティやメソッドをクラスに追加したくない場合は、passキーワードを使用します。

Studentクラスには、Personクラスと同じプロパティとメソッドが含まれるようになりました。

Studentクラスを使用してオブジェクトを作成し、printnameメソッドを実行します。
x = Student("マイク", "オルセン") x.printname()


__init__()関数を追加する

ここまでで、親からプロパティとメソッドを継承する子クラスを作成しました。

(pass キーワードの代わりに)__init__()関数を子クラスに追加したいと考えています。

注意:__init__()関数は、クラスが新しいオブジェクトの作成に使用されるたびに自動的に呼び出されます。


__init__()関数をStudentクラスに追加します。
class Student(Person):   def __init__(self, fname, lname):     #プロパティなどを追加する
__init__()関数を追加すると、子クラスは親の__init__()関数を継承しなくなります。

注意:子の__init__()関数は、親の__init__()関数の継承をオーバーライドします。

親の__init__()関数の継承を維持するには、親の__init__()関数への呼び出しを追加します。

class Student(Person):   def __init__(self, fname, lname):     Person.__init__(self, fname, lname)

これで、__init__()関数が正常に追加され、親クラスの継承が維持されたので、__init__()関数に機能を追加する準備が整いました。

super()関数を使用する

Python には、子クラスに親からすべてのメソッドとプロパティを継承させるsuper()関数もあります。

class Student(Person):   def __init__(self, fname, lname):     super().__init__(fname, lname)

super()関数を使用すると、親要素の名前を使用する必要がなく、親要素からメソッドとプロパティが自動的に継承されます。

プロパティを追加

graduationyearというプロパティを Studentクラスに追加します。
class Student(Person):   def __init__(self, fname, lname):     super().__init__(fname, lname)     self.graduationyear = 2019

以下の例では、2019年を変数にし、Studentオブジェクトの作成時にStudentクラスに渡す必要があります。これを行うには、__init__()関数に別のパラメーターを追加します。

yearパラメータを追加し、オブジェクトの作成時に正しい年を渡します。
class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year x = Student("マイク", "オルセン", 2019)


メソッドを追加

welcomeというメソッドをStudentクラスに追加します。
class Student(Person):   def __init__(self, fname, lname, year):     super().__init__(fname, lname)     self.graduationyear = year   def welcome(self):     print("Welcome", self.firstname, self.lastname, "to the class of", self.graduationyear)

親クラスの関数と同じ名前のメソッドを子クラスに追加すると、親メソッドの継承はオーバーライドされます。


プログラミング学習を加速させる

プログラミングをプロの講師に教えてもらいませんか。

テックアイエスのプログラミングスクールは初心者も大歓迎です。年齢制限もありません。転職・副業に強く、挫折させない手厚いサポートで稼ぐ力を身につけましょう!

スクールの詳細