サブクラスは多重継承で MRO メカニズムを使用します
Python では、クラスを定義するときに、その親クラスを指定できます。サブクラスは親クラスのすべてのプロパティとメソッドを継承し、独自の一意のプロパティとメソッドを追加できます。
ただし、クラスに複数の直接の親クラスがある場合、これらの親クラス間に同じ名前のプロパティやメソッドが存在する可能性があります。これらのプロパティとメソッドを正しく呼び出すために、Python は「メソッド解決順序」(メソッド解決順序、MRO) と呼ばれるアルゴリズムを使用して、プロパティとメソッドの検索順序を決定します。
アルゴリズム原理
Python 2.x では、MRO は深さ優先検索アルゴリズム (DFS) を使用して実装されます。このアルゴリズムにはいくつかの問題があり、場合によってはメソッド呼び出しシーケンスが正しく解析されません。例:
class A: def foo(self): print("A.foo") class B(A): pass class C(A): def foo(self): print("C.foo") class D(B, C): pass d = D() d.foo() # 输出"A.foo",而不是"C.foo"
上記のコードでは、クラス D はクラス B とクラス C を継承し、クラス C はクラス A の foo() メソッドをオーバーライドします。したがって、オブジェクト d の foo() メソッドを呼び出すときは、理論的にはクラス C の foo() メソッドを最初に呼び出す必要があります。ただし、Python 2.x は DFS アルゴリズムを使用するため、最初にクラス B、次にクラス C、最後にクラス A を走査します。したがって、クラス C の foo() メソッドではなく、クラス A の foo() メソッドが最終的に呼び出されます。
この問題を解決するために、Python 2.3 では C3 アルゴリズムが導入されました。このアルゴリズムは、トポロジカル ソート アルゴリズムを使用して MRO リストを計算し、メソッド呼び出し時の正確性を保証します。 C3 アルゴリズムの基本原理は次のとおりです。
新しいスタイルのクラス (つまり、明示的にオブジェクトを継承するクラス、または暗黙的にオブジェクトを継承するクラス) の MRO リストは、次に従って計算されます。幅優先検索 (BFS) アルゴリズム。
各クラスの MRO リストは次の 3 つの条件を満たす必要があります。
サブクラスの MRO リストは次のランクにある必要があります。親クラスの MRO リストの先頭。
2 つの親クラスが子クラスの MRO リストに表示される場合、リスト内でのそれらの相対的な順序は、子クラスの直接の親クラスでの出現と一致している必要があります。順番も同じです。
- #クラスは、MRO リストに 2 回以上出現することはできません。
__mro__ 属性を通じてクラスの MRO リストを表示できます。例:
class A: def foo(self): print("A.foo") class B(A): pass class C(A): def foo(self): print("C.foo") class D(B, C): pass print(D.__mro__)出力結果は次のようになります:
(そのうち、, , 、、)
はクラス D 自体を表し、
および
は親を表します。クラス D のそれぞれクラス B とクラス C、
は、クラス B と C の共通の親クラス A を表します、
はすべての新しいスタイルのクラスの基本クラスを表します。このリストの順序は、Python の実行時にプロパティとメソッドが検索される順序です。
以上がPython サブクラスは多重継承で MRO をどのように使用しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Pythonを1日2時間学ぶだけで十分ですか?それはあなたの目標と学習方法に依存します。 1)明確な学習計画を策定し、2)適切な学習リソースと方法を選択します。3)実践的な実践とレビューとレビューと統合を練習および統合し、統合すると、この期間中にPythonの基本的な知識と高度な機能を徐々に習得できます。

Web開発におけるPythonの主要なアプリケーションには、DjangoおよびFlaskフレームワークの使用、API開発、データ分析と視覚化、機械学習とAI、およびパフォーマンスの最適化が含まれます。 1。DjangoandFlask Framework:Djangoは、複雑な用途の迅速な発展に適しており、Flaskは小規模または高度にカスタマイズされたプロジェクトに適しています。 2。API開発:フラスコまたはdjangorestFrameworkを使用して、Restfulapiを構築します。 3。データ分析と視覚化:Pythonを使用してデータを処理し、Webインターフェイスを介して表示します。 4。機械学習とAI:Pythonは、インテリジェントWebアプリケーションを構築するために使用されます。 5。パフォーマンスの最適化:非同期プログラミング、キャッシュ、コードを通じて最適化

Pythonは開発効率でCよりも優れていますが、Cは実行パフォーマンスが高くなっています。 1。Pythonの簡潔な構文とリッチライブラリは、開発効率を向上させます。 2.Cのコンピレーションタイプの特性とハードウェア制御により、実行パフォーマンスが向上します。選択を行うときは、プロジェクトのニーズに基づいて開発速度と実行効率を比較検討する必要があります。

Pythonの実際のアプリケーションには、データ分析、Web開発、人工知能、自動化が含まれます。 1)データ分析では、PythonはPandasとMatplotlibを使用してデータを処理および視覚化します。 2)Web開発では、DjangoおよびFlask FrameworksがWebアプリケーションの作成を簡素化します。 3)人工知能の分野では、TensorflowとPytorchがモデルの構築と訓練に使用されます。 4)自動化に関しては、ファイルのコピーなどのタスクにPythonスクリプトを使用できます。

Pythonは、データサイエンス、Web開発、自動化スクリプトフィールドで広く使用されています。 1)データサイエンスでは、PythonはNumpyやPandasなどのライブラリを介してデータ処理と分析を簡素化します。 2)Web開発では、DjangoおよびFlask Frameworksにより、開発者はアプリケーションを迅速に構築できます。 3)自動化されたスクリプトでは、Pythonのシンプルさと標準ライブラリが理想的になります。

Pythonの柔軟性は、マルチパラダイムサポートと動的タイプシステムに反映されていますが、使いやすさはシンプルな構文とリッチ標準ライブラリに由来しています。 1。柔軟性:オブジェクト指向、機能的および手続き的プログラミングをサポートし、動的タイプシステムは開発効率を向上させます。 2。使いやすさ:文法は自然言語に近く、標準的なライブラリは幅広い機能をカバーし、開発プロセスを簡素化します。

Pythonは、初心者から上級開発者までのすべてのニーズに適した、そのシンプルさとパワーに非常に好まれています。その汎用性は、次のことに反映されています。1)学習と使用が簡単、シンプルな構文。 2)Numpy、Pandasなどの豊富なライブラリとフレームワーク。 3)さまざまなオペレーティングシステムで実行できるクロスプラットフォームサポート。 4)作業効率を向上させるためのスクリプトおよび自動化タスクに適しています。

はい、1日2時間でPythonを学びます。 1.合理的な学習計画を作成します。2。適切な学習リソースを選択します。3。実践を通じて学んだ知識を統合します。これらの手順は、短時間でPythonをマスターするのに役立ちます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

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

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

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

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