1.継承と派生
Python のすべてはオブジェクトであると上で述べました。オブジェクトから共通の特性やスキルを抽出し、クラスという概念を獲得しました。クラス間には共通の特性もあり、共通の特性やスキルを持つクラス (親クラスと呼ばれます) から共通のスキルや特性を抽出することもできます。
例えば、先生と生徒には名前、年齢、誕生日、性別などがあり、全員が歩き、話し、食事をします。 。 。教師と生徒の「人間」クラスを親クラスと呼びます。教師と生徒は「人間」クラスのサブクラスであり、親クラスの特性とメソッドを持ちます。
継承は「である」関係です。もちろん、その目的はコードの再利用を減らすことです。
継承の基本的な形式は次のとおりです:
Python では多重継承がサポートされており、サブクラスは複数の親クラスを継承できます
タプルを返す __bases__ メソッドを通じて、継承されたすべての親クラスを表示できます。
People 親クラスでは、オブジェクト クラスもデフォルトで継承されていることがわかります。これが、新しいスタイルのクラスとクラシック クラスの違いです。
オブジェクト クラスとそのサブクラスを継承するすべてのクラスは、新しいスタイル クラスと呼ばれます。オブジェクト クラスのクラスは継承を持たず、クラシック クラスと呼ばれます。
Python 3 ではデフォルトは新しいスタイルのクラスですが、Python 2.X ではデフォルトはクラシック クラスです
継承によってコードはどのように削減できるのでしょうか?例を参照してください
上記の例からわかるように、Teacher クラスは親クラス People クラスを継承しますが、Teacher には独自の一意の属性レベルがあり、サブクラスも独自の一意のメソッドを定義でき、親クラスと同じ名前を持つこともできます。ただし、実行はサブクラスの定義に基づいて行われます。
これを導出といいます
2. 組み合わせ
継承は「何であるか」の問題を解決します。次に、すべてに何かがあるという別のシナリオがあります。たとえば、教師にも誕生日があり、誕生日には年、月、日などの属性があります。各クラスがコードを記述すると、そのコードが繰り返されます。ただし、生徒と教師が誕生日クラスを継承することはできません。これは の組み合わせが使用される場合です。 組み合わせは、「持っているもの」の問題を解決することです。例を参照してください
何?パラメーターが多すぎますか? *学んで、ただ満足してください


3. 抽象クラスとインターフェイス
継承には 2 つの用途があります: 1. コードの再利用、サブクラスは親クラスのメソッドを継承します
2. ある親クラスと互換性のあるサブクラスを宣言し、インターフェースクラスInterfaceを定義する インターフェースクラスは、インターフェースの機能を継承するものではなく、いくつかのインターフェース名(つまり関数名)を定義します。クラスを作成し、関数
を実装します。Python にはインターフェースのキーワードがないことに注意してください。
例えば、Python ではすべてがファイルであるため、プログラムもファイル、ハードウェアもファイルです。テキストドキュメントもファイルです。それは、プログラムとテキストドキュメントがすべて読み書きできることを意味します


这么做的意义就是:我们不需要知道子类有什么具体的方法,既然他们继承了文件类,那他们就是文件,那他们就有读和写这两个功能
父类限制了子类子类必须有read和write这两个方法,而且名字也必须一样(当然现在只是我们主观上的限制,一会我们说完抽象类,就可以从代码级别上限制了),这样就实现了统一,模拟了接口的概念,这就是归一化设计。在归一化设计中,只要是基于一个接口设计的类,那么所有的这些类实例化出来的对象,在用法上是一样的
我们再来说一下抽象类:
Python中的抽象类需要导入一个模块来实现。抽象类只能被继承,不能被实现
抽象类的写法:
<span style="color: #0000ff">import</span><span style="color: #000000"> abc </span><span style="color: #0000ff">class</span> File(metaclass=<span style="color: #000000">abc.ABCMeta): @abc.abstractmethod </span><span style="color: #0000ff">def</span><span style="color: #000000"> read(self): </span><span style="color: #0000ff">pass</span><span style="color: #000000"> @abc.abstractmethod </span><span style="color: #0000ff">def</span><span style="color: #000000"> write(self): </span><span style="color: #0000ff">pass</span> <span style="color: #008000">#</span><span style="color: #008000">父类使用了抽象类,那子类就必须继承父类的方法,而且名字也必须一样</span><span style="color: #008000"> #</span><span style="color: #008000">这样就实现了代码级别的限制</span> <span style="color: #0000ff">class</span><span style="color: #000000"> Txt(File): </span><span style="color: #0000ff">def</span><span style="color: #000000"> read(self): </span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">文本文档的读取方式</span><span style="color: #800000">'</span><span style="color: #000000">) </span><span style="color: #0000ff">def</span><span style="color: #000000"> write(self): </span><span style="color: #0000ff">print</span>(<span style="color: #800000">'</span><span style="color: #800000">文本文档的写入方式</span><span style="color: #800000">'</span>)
4.继承的实现原理
1)继承顺序:
python支持多继承,当一个类继承多个父类时,继承顺序是怎样的呢?这个顺序在新式类和经典类中是不一样的。
在新式类中,继承顺序是广度优先,在经典类中是深度优先,举个栗子:
图不重要,看内容
在这个图中,H是子类,H继承E,F,G,E,F,G,又分别继承B,C,D,B,C,D,同时继承A
在新式类中的顺序是:H E B F C G D A
在经典类中的顺序是:H E B A F C G D
2)继承原理:
当我们定义一个类后,Python就会根据上面的继承规律解析出一个继承顺序的列表(MRO列表),可以通过mro()查看,但是这个方法只有在新式类中才有,经典类没有

以上がPython オブジェクト指向プログラミング (2)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonはゲームとGUI開発に優れています。 1)ゲーム開発は、2Dゲームの作成に適した図面、オーディオ、その他の機能を提供し、Pygameを使用します。 2)GUI開発は、TKINTERまたはPYQTを選択できます。 TKINTERはシンプルで使いやすく、PYQTは豊富な機能を備えており、専門能力開発に適しています。

Pythonは、データサイエンス、Web開発、自動化タスクに適していますが、Cはシステムプログラミング、ゲーム開発、組み込みシステムに適しています。 Pythonは、そのシンプルさと強力なエコシステムで知られていますが、Cは高性能および基礎となる制御機能で知られています。

2時間以内にPythonの基本的なプログラミングの概念とスキルを学ぶことができます。 1.変数とデータ型、2。マスターコントロールフロー(条件付きステートメントとループ)、3。機能の定義と使用を理解する4。

Pythonは、Web開発、データサイエンス、機械学習、自動化、スクリプトの分野で広く使用されています。 1)Web開発では、DjangoおよびFlask Frameworksが開発プロセスを簡素化します。 2)データサイエンスと機械学習の分野では、Numpy、Pandas、Scikit-Learn、Tensorflowライブラリが強力なサポートを提供します。 3)自動化とスクリプトの観点から、Pythonは自動テストやシステム管理などのタスクに適しています。

2時間以内にPythonの基本を学ぶことができます。 1。変数とデータ型を学習します。2。ステートメントやループの場合などのマスター制御構造、3。関数の定義と使用を理解します。これらは、簡単なPythonプログラムの作成を開始するのに役立ちます。

10時間以内にコンピューター初心者プログラミングの基本を教える方法は?コンピューター初心者にプログラミングの知識を教えるのに10時間しかない場合、何を教えることを選びますか...

fiddlereveryversings for the-middleの測定値を使用するときに検出されないようにする方法

Python 3.6のピクルスファイルのロードレポートエラー:modulenotFounderror:nomodulenamed ...


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ZendStudio 13.5.1 Mac
強力な PHP 統合開発環境

SublimeText3 英語版
推奨: Win バージョン、コードプロンプトをサポート!

AtomエディタMac版ダウンロード
最も人気のあるオープンソースエディター
