この記事の内容は Python による構文解析に関するものです (例付き)。一定の参考価値があります。困っている友人は参考にしてください。お役に立てれば幸いです。
Python では、__init__(self) のように関数名の前後に二重アンダースコアが付いていますが、このタイプの記述は Python では特別な意味を持ちます。オブジェクトがこれらのメソッドのいずれかを使用する場合、そのメソッドは特別な状況下で実行されますが、そのようなメソッドが直接呼び出されることはほとんどありません。
古いバージョンの Python コードと互換性を持たせる必要がない場合は、すべてのクラスを新しいスタイルのクラスとして記述し、コードを記述するときにスーパー関数などの機能を使用する必要があります。
Python 3.0 には「古いスタイル」クラスはなく、Object をサブクラス化したり、メタクラスを type (コードの開始行 __metaclass__=type) に設定したりする必要はありません。オブジェクトのサブクラス。明示的なスーパークラスがない場合は直接サブクラス化され、それ以外の場合は間接的にサブクラス化されます。
Python のコンストラクター メソッド
コンストラクター メソッドは他のメソッドとは異なり、オブジェクトが作成されるとすぐに呼び出されます。
一般メソッドと特別な構築メソッドを書き直す:
継承の概念を理解すると、各クラスが 1 つ以上のスーパークラスを持つことができ、サブクラスが親クラスから継承することがわかります。親クラスの。それだけでなく、いくつかのスーパークラス メソッドをオーバーライドして継承動作をカスタマイズすることもできます。
class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print('我在吃') self.hungry=False else: print('我吃饱了,谢谢') sb=Bird() sb.eat() sb.eat()
出力結果:
我在吃 我吃饱了,谢谢
コードから、鳥が満腹になった後、空腹状態を Flase に変更します。鳥が満腹であることを意味します。eat 関数が呼び出されると、満腹であることが表示されます。ありがとうございます。これは、クラスで __init__ 関数を使用することによって行われます。拡張されたケースを見てみましょう。食べることは鳥の基本的な特徴であり、Bird は鳥の基本クラスとみなすことができます。ここで、歌う鳥を書きます。すでに鳥の基本クラスを書いているので、あとはそれを継承するだけです。鳥は歌うだけでなく、デフォルトで食べるスキルも学習します。
class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print('ahhh') self.hungry=False else: print('no thanks') class SongBird(Bird): def __init__(self): self.sound='Squawk' def sing(self): print(self.sound) sb=SongBird() sb.sing() sb.eat() sb.eat()
結果の印刷:
Traceback (most recent call last): Squawk File "F:/Python培训/博客园随笔专用/文件操作/文件读写.py", line 20, in <module> sb.eat() File "F:/Python培训/博客园随笔专用/文件操作/文件读写.py", line 5, in eat if self.hungry: AttributeError: 'SongBird' object has no attribute 'hungry'
残念なことに、私たちの鳥はさえずり機能をトリガーする可能性があります。 、しかし、親クラスの食べる関数が呼び出されるとき、例外がスローされます。親クラスで定義されているeat関数を見ると、eat関数を開始するにはhungry属性を設定する必要があります。しかし、不可解なのは、基本クラス Bird を継承しており、Bird は空腹を定義しているのに、なぜ機能しないのかということです。これは、hung 属性は、親クラスが独自のコンストラクターを呼び出した場合にのみ有効になるためです。 SingBird は Bird のすべての機能を継承しますが、Bird の初期化関数をトリガーしないことがわかります。次のコードを変更します。
class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print('ahhh') self.hungry=False else: print('no thanks') class SongBird(Bird): def __init__(self): Bird.__init__(self) self.sound='Squawk' def sing(self): print(self.sound) sb=SongBird() sb.sing() sb.eat() sb.eat()
出力結果:
Squawk ahhh no thanks
SongBird がクラスを初期化するときに、Bird の初期化関数が呼び出されます。したがって、Bird のコンストラクターがトリガーされます。現在、私たちの鳥は歌うだけでなく、基本的な種と同じように食べる行動もできるようになりました。
その実行プロセスを見てください。 SongBird は自身を初期化する際、自身をパラメータとして親クラスに渡します。これは、あなたが私を作成したときに、私に生来のスキル (自分自身を養う方法を知る) を与える必要があったことを親クラスに伝えることを意味します。つまり、ハングリー属性が設定される。
スーパー関数の使用
上記のメソッドは 3.0 より前に記述されています。上記の問題を解決するために、新しいクラスでスーパー関数が使用されます。
class Bird: def __init__(self): self.hungry=True def eat(self): if self.hungry: print('ahhh') self.hungry=False else: print('no thanks') class SongBird(Bird): def __init__(self): super(SongBird, self).__init__() self.sound='Squawk' def sing(self): print(self.sound) sb=SongBird() sb.sing() sb.eat() sb.eat()
現在のクラスとオブジェクトはパラメータとして呼び出され、関数によって返されたオブジェクトを呼び出すメソッドはすべてスーパークラスを呼び出すメソッドです。概要: サブクラスとサブクラス オブジェクトは明示的に渡され、コンストラクターが呼び出されますが、親クラスのコンストラクターは暗黙的に実行されます。
以上がPython のコンストラクター メソッドの分析 (例付き)の詳細内容です。詳細については、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 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

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

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

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

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

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

ホットトピック









