Python のオブジェクト メソッドの定義は非常に奇妙です。通常、最初のパラメータは self (他の言語でのこれに相当) という名前が付けられ、システムを呼び出すときにオブジェクト自体を渡すために使用されます。自動的に通過します。
今日紹介する主役は super() で、Super() はクラスの継承でよく使用され、親クラスのメソッドを複数回呼び出す場合に実行されるのは 1 回だけです。実行を最適化します。以下で詳しく見てみましょう。
例を挙げます:
class Foo: def bar(self, message): print(message)
>>> Foo().bar("Hello, Python.") Hello, Python.
継承関係がある場合、サブクラスで親クラスのメソッドを呼び出す必要がある場合があります。このとき、最も簡単な方法は、オブジェクト呼び出しをクラス呼び出しに変換することです。現時点では、self パラメータを明示的に渡す必要があることに注意してください。例:
class FooParent: def bar(self, message): print(message) class FooChild(FooParent): def bar(self, message): FooParent.bar(self, message)
>>> FooChild().bar("Hello, Python.") Hello, Python.
これには、いくつかの欠点があります。たとえば、親クラスの名前が変更されると、複数の変更がサブクラスに反映されます。また、Pythonは前述したように多重継承が可能な言語です。多重継承がある場合には上記のメソッドを何度も記述する必要があり、面倒に思えます。これらの問題を解決するために、Python は super() メカニズムを導入しました。コード例は次のとおりです。
class FooParent: def bar(self, message): print(message) class FooChild(FooParent): def bar(self, message): super(FooChild, self).bar(message)
>>> FooChild().bar("Hello, Python.") Hello, Python.
表面的には、 super(FooChild, self).bar(message) メソッドと FooParent.bar の結果です。 (self, message) メソッドは一貫していますが、実際、これら 2 つのメソッドの内部処理メカニズムは大きく異なります。多重継承が関係する場合は、明らかな違いがあります。
コード 1:
class A: def __init__(self): print("Enter A") print("Leave A") class B(A): def __init__(self): print("Enter B") A.__init__(self) print("Leave B") class C(A): def __init__(self): print("Enter C") A.__init__(self) print("Leave C") class D(A): def __init__(self): print("Enter D") A.__init__(self) print("Leave D") class E(B, C, D): def __init__(self): print("Enter E") B.__init__(self) C.__init__(self) D.__init__(self) print("Leave E") E()
結果:
Eを入力
Bを入力
Aを入力
Aを離れる
Bを離れる
Cを入力
Aを入力
Aを離れる
Cを離れる
Dを入力
Aを離れる
Aを離れる
Leave E
実行順序は理解しやすいですが、唯一注意が必要なのは、公開親クラス A が複数回実行されることです。
コード 2:
class A: def __init__(self): print("Enter A") print("Leave A") class B(A): def __init__(self): print("Enter B") super(B, self).__init__() print("Leave B") class C(A): def __init__(self): print("Enter C") super(C, self).__init__() print("Leave C") class D(A): def __init__(self): print("Enter D") super(D, self).__init__() print("Leave D") class E(B, C, D): def __init__(self): print("Enter E") super(E, self).__init__() print("Leave E") E()
結果:
E を入力
B を入力
C を入力
D を入力
A を入力
A のまま
D のまま
C のまま
B のまま
Eを離れる
スーパー機構では、パブリック親クラスの実行順序はMRO(Method Resolution Order):メソッド解決順序に従うことが保証されています。このMROの仕組みについては後ほど詳しく紹介します。
以上がPythonのsuper()関数の使い方と動作原理の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

Arraysinpython、特にvianumpy、arecrucialinscientificComputing fortheirefficienty andversitility.1)彼らは、fornumericaloperations、data analysis、andmachinelearning.2)numpy'simplementation incensuresfasteroperationsthanpasteroperations.3)arayableminablecickick

Pyenv、Venv、およびAnacondaを使用して、さまざまなPythonバージョンを管理できます。 1)Pyenvを使用して、複数のPythonバージョンを管理します。Pyenvをインストールし、グローバルバージョンとローカルバージョンを設定します。 2)VENVを使用して仮想環境を作成して、プロジェクトの依存関係を分離します。 3)Anacondaを使用して、データサイエンスプロジェクトでPythonバージョンを管理します。 4)システムレベルのタスク用にシステムPythonを保持します。これらのツールと戦略を通じて、Pythonのさまざまなバージョンを効果的に管理して、プロジェクトのスムーズな実行を確保できます。

numpyarrayshaveveraladvantages-averstandardpythonarrays:1)thealmuchfasterduetocベースのインプレンテーション、2)アレモレメモリ効率、特にlargedatasets、および3)それらは、拡散化された、構造化された形成術科療法、

パフォーマンスに対する配列の均一性の影響は二重です。1)均一性により、コンパイラはメモリアクセスを最適化し、パフォーマンスを改善できます。 2)しかし、タイプの多様性を制限し、それが非効率につながる可能性があります。要するに、適切なデータ構造を選択することが重要です。

craftexecutablepythonscripts、次のようになります

numpyarraysarasarebetterfornumeroperations andmulti-dimensionaldata、whilethearraymoduleissuitable forbasic、1)numpyexcelsinperformance and forlargedatasentassandcomplexoperations.2)thearraymuremememory-effictientivearientfa

NumPyArraySareBetterforHeavyNumericalComputing、whilethearrayarayismoreSuitableformemory-constrainedprojectswithsimpledatatypes.1)numpyarraysofferarays andatiledance andpeperancedatasandatassandcomplexoperations.2)thearraymoduleisuleiseightweightandmemememe-ef

ctypesallowsinging andmanipulatingc-stylearraysinpython.1)usectypestointerfacewithclibrariesforperformance.2)createc-stylearraysfornumericalcomputations.3)passarraystocfunctions foreffientientoperations.how、how、becuutiousmorymanagemation、performanceo


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

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

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

mPDF
mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SAP NetWeaver Server Adapter for Eclipse
Eclipse を SAP NetWeaver アプリケーション サーバーと統合します。

ホットトピック









