ホームページ >バックエンド開発 >Python チュートリアル >Lao Qi から Python の 3 つのサブクラスの書き方を学ぶ
クラスについては、読者の皆さんはすでに感じているはずです。以下のコードをよく読んで、何か問題がないか確認してください。
クラスの人:
Def __init__(自分自身、名前、言語、電子メール):
self.name = 名前
self.lang = lang
self.email = メール
デフォルトの作成者(自分):
self.name
クラスプログラマー:
Def __init__(自分自身、名前、言語、電子メール、システム、ウェブサイト):
self.name = 名前
self.lang = lang
self.email = メール
self.system = system
self.website = ウェブサイト
def Python(self):
pythoner_list = [ self.name, self.lang, self.email, self.system, self.website ]
pythoner_list を返す
Writer = 人("qiwsir","中国語","qiwsir@gmail.com")
python = プログラマー("qiwsir","Python","qiwsir@gmail.com","Ubutun","qiwsir.github.io")
Print "私の名前は:%s"%writer.author()
Print "私はプログラムを作成します:%s"%python.pythoner()[1]
サブクラス、親クラス、継承
以下のコードを見てください。クラス A と B の 2 つがあります。このプログラムは正しく実行でき、各クラスの機能は指定されたコンテンツのみを出力することです。
Def __init__(self):
print "aaa"
Def __init__(self):
print "bbb"
if __name__=="__main__":
b = B()
#実行結果
bbb
print "aaa"
class B(A): #上記のプログラムとは異なります。 B は A
print "bbb"
if __name__=="__main__":
b = B()
#実行結果
bbb
しかし、関係者が気づいても気づかなくても、実行結果は同じです。はい、それは、B が A を相続しますが、A からは何も呼び出さないことを意味します。これは、息子が父親から富を相続するのと同じですが、息子は一銭も動かないのです。外の世界では、相続が存在しないように見えます。
print "aaa"
クラス B(A):
#print "bbb"
A.__init__(self) #継承された親クラスを実行します
if __name__=="__main__":
b = B()
#実行結果
ああ
今回は実行結果が変わりました。元々 b=B() はクラス B を実行していましたが、B は A を継承し、初期化コンストラクターに A のコンストラクターを導入したため、A を実行した結果が Result に対応します。
サブクラス継承を使用して最初のプログラムを書き直してみましょう。
クラスの人:
Def __init__(自分自身、名前、言語、電子メール):
self.name = 名前
self.lang = lang
self.email = メール
デフォルトの作成者(自分):
self.name
を返す
"""
クラスプログラマー:
Def __init__(自分自身、名前、言語、電子メール、システム、ウェブサイト):
self.name = 名前
self.lang = lang
self.email = メール
self.system = system
self.website = ウェブサイト
def Python(self):
pythoner_list = [ self.name, self.lang, self.email, self.system, self.website ]
pythoner_list を返す
"""
Def __init__(自分自身、名前、言語、電子メール、システム、ウェブサイト):
Person.__init__(self,name,lang,email) #ここに Person.__init__() の関数を継承します
#Self.name = name #これら 3 つの文は person で記述されているため、
を繰り返す必要はありません
#self.lang = lang #これら 3 つの文の機能は継承によって実現されています
#self.email = メール
self.system = システム
self.website = ウェブサイト
def Python(self):
pythoner_list を返す
if __name__=="__main__":
Writer = 人("qiwsir","中国語","qiwsir@gmail.com")
Print "私の名前は:%s"%writer.author()
Print "私はプログラムを作成します:%s"%python.pythoner()[1]
コードを実行した結果は前と同じです。
継承が使用される理由については、私の友人 @linghuchongdaxia が非常に素晴らしい説明をしてくれました:
コードをコピー
さらに、論理的に言えば、継承の目的はコードを再利用することではなく、関係を整理することです。
私は上記の説明に完全に同意します。しかし、読者が理解できなくても、上記の説明の精神はプログラミングの実践を通じて理解する必要があります。