私はPythonの組み込みid()
がオブジェクトの存続期間中一意のIDを返すことを理解します。生存期間が重複していないオブジェクトは、同じIDで終わることがあります。Pythonオブジェクトの反復可能なIDの衝突
>>> id(matplotlib.image.BboxImage.set_cmap)
4424372944
>>> id(numpy.ma.core.MaskedArray.sum)
4424372944
と複数のインタプリタインスタンス間で実際には、動作は反復可能である:しかし、私はこのかなり紛らわしい行動を理解しようとしています
Mac:~$ python2.7 -c "import matplotlib.image; import numpy; print id(matplotlib.image.BboxImage.set_cmap), id(numpy.ma.core.MaskedArray.sum)"
4343186208 4343186208
Mac:~$ python2.7 -c "import matplotlib.image; import numpy; print id(matplotlib.image.BboxImage.set_cmap), id(numpy.ma.core.MaskedArray.sum)"
4521153312 4521153312
Mac:~$ python2.7 -c "import matplotlib.image; import numpy; print id(matplotlib.image.BboxImage.set_cmap), id(numpy.ma.core.MaskedArray.sum)"
4358591264 4358591264
Mac:~$ python2.7 -c "import matplotlib.image; import numpy; print id(matplotlib.image.BboxImage.set_cmap), id(numpy.ma.core.MaskedArray.sum)"
4389970720 4389970720
matplotlib.image.BboxImage.set_cmap
とnumpy.ma.core.MaskedArray.sum
が常に同じIDを取得することが表示されますPythonインタプリタの異なるインスタティックにもかかわらず、お互いに。の場合は、id()
のドキュメントと一貫していることを理解しました。これらの2つのオブジェクトはアクセス時に動的に作成されるため、重複しない存続時間を持つためです。しかし、なぜこれら2つの関係のないオブジェクトは、常に同じIDで終了しますか?
(これは、単に複数のインタプリタインスタンスではなく、非オーバーラップ寿命を持つオブジェクトのスプリアスIDの衝突間で反復可能である理由をここで私が求めているので、この質問はObject methods of same class have same id?に異なります。)