1

私はpython 3kのcpythonコードを読んでい__missing__ます. これら 2 つのメソッドの違いと、それぞれが呼び出されたときの違いは何ですか? dict のサブクラスでメソッドを持つ PyObject を渡す場合、それを強制的に使用するにはどうすればよいですか。dict_subscriptPyDict_GetItem__missing__PyDict_GetItem

4

1 に答える 1

1

観察、推測など:

Python 2.x でも同じことが起こります。

dict_subscripthigh_level メソッドと同等のものを実装しているため、Python コードの代入の LHS 以外に現れるdict.__getitem__たびに呼び出されます。adict[somekey]

PyDict_GetItemC API の一部です。更新されていないのは見落としかもしれません。

の冒頭の悲惨なコメントを読んだPyDict_GetItemので、代わりに使用しPyDict_GetItemWithErrorます;-)

おそらく、C レベルの同等の操作をmy_getitem = getattr(my_dict, '__getitem__')1 回行ってから、それを呼び出すことができます。

おそらく、バグ チケットを上げるか、comp.lang.python で尋ねることができます。

于 2010-03-18T22:16:18.077 に答える