私はpython 3kのcpythonコードを読んでい__missing__
ます. これら 2 つのメソッドの違いと、それぞれが呼び出されたときの違いは何ですか? dict のサブクラスでメソッドを持つ PyObject を渡す場合、それを強制的に使用するにはどうすればよいですか。dict_subscript
PyDict_GetItem
__missing__
PyDict_GetItem
1 に答える
1
観察、推測など:
Python 2.x でも同じことが起こります。
dict_subscript
high_level メソッドと同等のものを実装しているため、Python コードの代入の LHS 以外に現れるdict.__getitem__
たびに呼び出されます。adict[somekey]
PyDict_GetItem
C API の一部です。更新されていないのは見落としかもしれません。
の冒頭の悲惨なコメントを読んだPyDict_GetItem
ので、代わりに使用しPyDict_GetItemWithError
ます;-)
おそらく、C レベルの同等の操作をmy_getitem = getattr(my_dict, '__getitem__')
1 回行ってから、それを呼び出すことができます。
おそらく、バグ チケットを上げるか、comp.lang.python で尋ねることができます。
于 2010-03-18T22:16:18.077 に答える