Python 继承
- 前のページ Python クラス/オブジェクト
- 次のページ 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)
ヒント:サブクラスに親クラスの同名のメソッドを追加すると、親メソッドの継承をオーバーライドします。
- 前のページ Python クラス/オブジェクト
- 次のページ Python イテレーション