Python オブジェクト指向プログラミング (2)
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 サイトの他の関連記事を参照してください。

ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









hadidb:軽量で高レベルのスケーラブルなPythonデータベースHadIDB(HadIDB)は、Pythonで記述された軽量データベースで、スケーラビリティが高くなっています。 PIPインストールを使用してHADIDBをインストールする:PIPINSTALLHADIDBユーザー管理CREATEユーザー:CREATEUSER()メソッド新しいユーザーを作成します。 Authentication()メソッドは、ユーザーのIDを認証します。 fromhadidb.operationimportuseruser_obj = user( "admin"、 "admin")user_obj。

Hash値として保存されているため、Navicatを介してMongoDBパスワードを直接表示することは不可能です。紛失したパスワードを取得する方法:1。パスワードのリセット。 2。構成ファイルを確認します(ハッシュ値が含まれる場合があります)。 3.コードを確認します(パスワードをハードコードできます)。

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

MySQLデータベースパフォーマンス最適化ガイドリソース集約型アプリケーションでは、MySQLデータベースが重要な役割を果たし、大規模なトランザクションの管理を担当しています。ただし、アプリケーションのスケールが拡大すると、データベースパフォーマンスのボトルネックが制約になることがよくあります。この記事では、一連の効果的なMySQLパフォーマンス最適化戦略を検討して、アプリケーションが高負荷の下で効率的で応答性の高いままであることを保証します。実際のケースを組み合わせて、インデックス作成、クエリ最適化、データベース設計、キャッシュなどの詳細な主要なテクノロジーを説明します。 1.データベースアーキテクチャの設計と最適化されたデータベースアーキテクチャは、MySQLパフォーマンスの最適化の基礎です。いくつかのコア原則は次のとおりです。適切なデータ型を選択し、ニーズを満たす最小のデータ型を選択すると、ストレージスペースを節約するだけでなく、データ処理速度を向上させることもできます。

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

データの専門家として、さまざまなソースから大量のデータを処理する必要があります。これは、データ管理と分析に課題をもたらす可能性があります。幸いなことに、AWS GlueとAmazon Athenaの2つのAWSサービスが役立ちます。

いいえ、MySQLはSQL Serverに直接接続できません。ただし、次のメソッドを使用してデータ相互作用を実装できます。ミドルウェア:MySQLから中間形式にデータをエクスポートしてから、ミドルウェアを介してSQL Serverにインポートします。データベースリンカーの使用:ビジネスツールは、よりフレンドリーなインターフェイスと高度な機能を提供しますが、本質的にはミドルウェアを通じて実装されています。

Redisサーバーを起動する手順には、以下が含まれます。オペレーティングシステムに従ってRedisをインストールします。 Redis-Server(Linux/Macos)またはRedis-Server.exe(Windows)を介してRedisサービスを開始します。 Redis-Cli ping(Linux/macos)またはRedis-Cli.exePing(Windows)コマンドを使用して、サービスステータスを確認します。 Redis-Cli、Python、node.jsなどのRedisクライアントを使用して、サーバーにアクセスします。
