ホームページ >バックエンド開発 >Python チュートリアル >Python クラスのインスタンス化で __init__() が __new__() に従わないのはどのような場合ですか?
__new__() および __init__() 実行のシーケンスを理解する
Python の __new__() および __init__() メソッドはクラスで重要な役割を果たしますインスタンス化。 __new__() はクラスの新しいインスタンスを作成し、__init__() はそのインスタンスを初期化します。予想される実行順序は、__new__() が __init__() より前に呼び出されるというものです。
ただし、特定のシナリオではこの順序が変更される可能性があります。カスタム __new__() メソッドを実装する場合、インスタンスの作成を操作し、新しいインスタンスを作成する代わりに既存のインスタンスを返すことができます。この動作は、フライウェイト デザイン パターンなどのパターンを実装するために利用されます。
そのような場合、予期せぬものであっても、__new__() の後に __init__() が呼び出されることがあります。カスタム __new__() が既存のオブジェクトを返さない限り、__init__() は常に __new__() の後に呼び出されます。
これに対処するには、ファクトリ関数を使用するなど、より従来的な方法で目的の機能を実装することを検討してください。あるいは、カスタム __new__() メソッド内に初期化コードを含めることもできます。ただし、このアプローチは「巧妙」であると考えられるため、ベスト プラクティスとして推奨されません。
以上がPython クラスのインスタンス化で __init__() が __new__() に従わないのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。