Je lis le code cpython pour python 3k et j'ai remarqué que __missing__
est appelée seulement quand dict_subscript
est appelée, mais pas quand PyDict_GetItem
est utilisé. Quelle est la différence entre ces deux méthodes et quand chacune est appelée? Si je passe un PyObject qui est une sous-classe de dict et qui a la méthode __missing__
, comment puis-je forcer à l'utiliser, puisque PyDict_GetItem
ne le fait pas.cpython: quand PyDict_GetItem est appelé et quand dict_subscript?
1
A
Répondre
1
observations, suppositions, etc:
même chose se produit en Python 2.x.
dict_subscript
implémente l'équivalent de la méthode High_level dict.__getitem__
et sera donc appelé à chaque fois que adict[somekey]
apparaît autre que le LHS d'une affectation dans le code Python.
PyDict_GetItem
fait partie de l'API C. C'est peut-être un oubli que cela n'a pas été mis à jour.
Après avoir lu les commentaires terribles au début de PyDict_GetItem
, j'utiliserai PyDict_GetItemWithError
à la place ;-)
Peut-être que vous pouvez faire l'équivalent de niveau C de my_getitem = getattr(my_dict, '__getitem__')
une fois puis appeler.
Peut-être que vous pourriez soulever un billet bug ou demander sur comp.lang.python
Questions connexes
- 1. JSF 2.0: Quand est-ce que encodeAll est appelé et quand encodeBegin est appelé?
- 2. Quand l'opérateur const est-il appelé et quand l'opérateur non-const est-il appelé?
- 3. Quand ServiceConnection.onServiceDisconnected() est-il appelé?
- 4. quand est-on appelé onSizeChanged()?
- 5. Quand 'drawRect' est-il appelé?
- 6. Pourquoi/quand ComponentListener.componentShown() est appelé?
- 7. Quand est-ce que encodeWithCoder est appelé?
- 8. Contrôle personnalisé ASP.NET: quand est LoadPostData() appelé?
- 9. Quand TInterfacedObject.Destroy est appelé (une classe ScopedLock)
- 10. ASP MVC: Quand IController Dispose() est appelé?
- 11. Quand [NSWindowDelegate windowWillClose] est-il appelé?
- 12. Quand OnValidate est-il appelé dans Linq?
- 13. Est-ce important quand super est appelé dans dealloc?
- 14. script Bash ne pas sortir immédiatement quand `exit` est appelé
- 15. iPhone - quand le dealloc pour un viewcontroller est-il appelé?
- 16. MPMoviePlayerPlaybackDidFinishNotification est appelé quand il ne doit pas
- 17. variables de classe objective-c: quand callloc est appelé?
- 18. Xamly commence un storyboard quand un RoutedCommand est appelé?
- 19. Quand utiliser/proc et quand/dev
- 20. Quand utiliser POJO et Quand utiliser SLSB
- 21. Quand utilisez-vous "apply" et quand "funcall"?
- 22. Quand utiliser conserver et quand utiliser copier
- 23. Quand Default.png est-il effacé?
- 24. Quelle est la règle? quand est-ce que j'utilise $ (this) et quand "this" est-il suffisant?
- 25. Quand est-ce qu'un app.config est créé, quand un app.exe.config et quelle est la différence
- 26. Quand mysql_real_escape_string() est nécessaire?
- 27. Quand __repr __() est appelée?
- 28. Quand est-ce que webViewDidFinishLoad est renvoyé?
- 29. Où et quand InitializeComponent est-il appelé dans le contrôle Windows Forms dans VB.NET?
- 30. iphone - quand exactement cellForRowAtIndexPath est-il appelé pour les vues de table et par quoi en