1. ホーム
  2. python

[解決済み】オブジェクトメモリアドレスへのアクセス

2022-04-13 08:19:09

質問

を呼び出すと object.__repr__() メソッドをPythonで実行すると、次のようなものが返ってきます。

<__main__.Test object at 0x2aba1c0cf890> 

をオーバーロードした場合、メモリアドレスを把握する方法はあるのでしょうか? __repr__() を呼び出す以外に super(Class, obj).__repr__() とか、リジェックスとか?

どのように解決するのですか?

その Pythonマニュアル については、次のように書かれています。 id() :

<ブロッククオート

オブジェクトのquot;identity''を返します。 これは整数(または長整数)である。 一意であることが保証され このオブジェクトは、その ライフタイム を持つ2つのオブジェクトがある。 ライフタイムが重ならない限り、同じ は同じ id() 値とする。(実装上の注意。 これはオブジェクトのアドレスである)。

つまり、CPythonでは、これがオブジェクトのアドレスになるわけです。他のPythonインタプリタでは、そのような保証はありませんが。

C 拡張を書いている場合、Python インタープリタの内部に完全にアクセスすることができ、オブジェクトのアドレスに直接アクセスすることも可能であることに注意してください。