ホームページ >バックエンド開発 >Python チュートリアル >__new__() 関数を使用して Python でオブジェクト インスタンスを作成する方法
__new__() 関数を使用して Python でオブジェクト インスタンスを作成する方法
__new__() 関数は、オブジェクト インスタンスを作成するために Python に組み込まれた特別なメソッドです。 __init__() メソッドとは異なり、 __new__() メソッドはオブジェクトがインスタンス化される前に呼び出され、オブジェクトを作成してオブジェクトのインスタンスを返します。
Python では、オブジェクト インスタンスが作成されるときは常に、実際にはクラスの __new__() メソッドを呼び出すことによって行われます。 __new__() メソッドはオブジェクト インスタンスの作成を担当し、そのプロセスで親クラスの __new__() メソッドを呼び出し、最終的に新しいオブジェクト インスタンスを返します。
以下では、コード例を使用して、__new__() メソッドを使用してオブジェクト インスタンスを作成する方法を示します。
class MyClass(object): def __new__(cls, *args, **kwargs): print("调用了__new__()方法") instance = super().__new__(cls) return instance def __init__(self, *args, **kwargs): print("调用了__init__()方法") # 对象初始化操作 # 创建对象实例 my_obj = MyClass()
上記のコードでは、__new__() メソッドと __init__() メソッドを含むクラス MyClass
を定義します。
__new__() メソッドでは、最初にデバッグ情報を出力し、次に super().__new__(cls)
メソッドを呼び出して新しいオブジェクト インスタンスを作成します。このインスタンスは次の値を返します。 。 super().__new__(cls)
を呼び出すときに、パラメータとして cls
を渡したことに注意してください。これは、__new__() メソッドがパラメータ cls# を受け取るためです。 #、現在のクラスを表すために使用されます。
my_obj を作成します。
调用了__new__()方法 调用了__init__()方法出力からわかるように、__new__() メソッドが最初に呼び出され、次に __init__() メソッドが呼び出されます。と呼ばれます。これは、オブジェクト インスタンスを作成するときに、Python が最初に __new__() メソッドを呼び出してオブジェクトを作成し、次に __init__() メソッドを呼び出してオブジェクトを初期化するためです。 __new__() メソッドはクラス レベルのメソッドであり、__init__() メソッドはオブジェクト レベルのメソッドであることに注意してください。 __new__() メソッドは新しいオブジェクト インスタンスを返す必要がありますが、__init__() メソッドは値を返す必要はありません。 したがって、 __new__() メソッドを使用すると、オブジェクトの作成プロセスの制御、オブジェクトのカスタム初期化など、オブジェクトがインスタンス化される前に特別な処理を実行できます。 要約すると、__new__() メソッドは、場合によってはオブジェクトをより柔軟に作成できる非常に強力な特別なメソッドです。 __new__() メソッドの使用をマスターすることで、Python のオブジェクト指向プログラミングをより深く理解し、カスタム クラスの設計と実装に慣れることができます。
以上が__new__() 関数を使用して Python でオブジェクト インスタンスを作成する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。