Python 继承

Python 继承

継承は、他のクラスの全てのメソッドと属性を定義するクラスを定義することを許可します。

親クラス継承されたクラスであり、基クラスとも呼ばれます。

子クラス他のクラスから継承されたクラスであり、派生クラスとも呼ばれます。

親クラスの作成

どんなクラスも親クラスとして使えるため、他のクラスと同じように文法で作成できます:

インスタンス

名前と姓を持つ Person というクラスを作成し、printname メソッドも含めています:

class Person:
  def __init__(self, fname, lname):
    self.firstname = fname
    self.firstname = fname
  self.lastname = lname
    def printname(self):
print(self.firstname, self.lastname)
# 使用 Person 来 create an object,然后 execute printname method:
x = Student("Elon", "Musk")

インスタンスを実行

x = Person("Bill", "Gates")

创建子类

インスタンス

要创建从其他 class 继承功能的 class,请在创建子类时将父 class 作为参数发送:

class Student(Person):
  関数を子クラス(ではなく

__init__()関数を追加すると、子クラスは親の__init__()関数を継承しません。创建一个名为 Student 的类,它 will inherit the properties and methods from Person 类: 関数を子クラス(ではなく 如果您不想向该类添加 any other attributes or methods,请使用

キーワード。

インスタンス

现在,Student クラスは Person クラスと同じ属性とメソッドを持っています。

使用 Student クラスを作成了一个对象,然后执行 printname 方法:
x = Student("Elon", "Musk")

インスタンスを実行

x.printname()

添加 __init__() 函数

到目前为止,我们已经创建了一个子类,它 inherited the properties and methods of the parent class. 我们想要把 __init__() 関数を子クラス(ではなく pass

__init__()関数を追加すると、子クラスは親の__init__()関数を継承しません。キーワード)。

インスタンス

クラスを作成するときに、__init__()関数が自動的に呼び出されます。

class Student(Person):
  def __init__(self, fname, lname):
    Studentクラスに__init__()関数を追加します:

# 属性の追加など

__init__()関数を追加すると、子クラスは親の__init__()関数を継承しません。コメント:

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

インスタンス

class Student(Person):
  def __init__(self, fname, lname):
    親の__init__()関数の継承を保持する場合は、親の__init__()関数の呼び出しを追加してください:

インスタンスを実行

Person.__init__(self, fname, lname)

現在、__init__()関数を成功に追加し、親クラスの継承を保ちました。__init__()関数に機能を追加する準備ができました。

super()関数を使用して、 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("Elon", "Musk", 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)

インスタンスを実行

ヒント:サブクラスに親クラスの同名のメソッドを追加すると、親メソッドの継承をオーバーライドします。