Lorsqu'un objet possède des centaines de méthodes, la complétion des tabulations est difficile à utiliser. Plus souvent qu'autrement, les méthodes intéressantes sont celles définies ou substituées par la classe de l'objet inspecté et non ses classes de base.Comment puis-je faire en sorte que IPython organise les possibilités de complétion des tabulations par classe?
Comment puis-je obtenir IPython pour regrouper ses possibilités de complétion de tabulation afin que les méthodes et les propriétés définies dans la classe de l'objet inspecté viennent en premier, suivies par celles des classes de base?
Il ressemble à la fonction inspect.classify_class_attrs(cls)
sans papier avec inspect.getmro(cls)
me donnent la plupart des informations dont j'ai besoin (ceux-ci ont été écrits pour mettre en œuvre fonction de python help(object)
). Par défaut, readline affiche les compléments par ordre alphabétique, mais la fonction utilisée pour afficher les complétions peut être remplacée par ctypes ou le module readline inclus avec Python 2.6 et supérieur. J'ai remplacé l'affichage des lectures de readline et cela fonctionne très bien. Maintenant tout ce dont j'ai besoin est une méthode pour fusionner les informations par classe (à partir de inspect.*
ci-dessus) avec des informations par instance, trier les résultats par ordre de résolution de méthode, joli print et paginate.
Pour un crédit supplémentaire, il serait bon de stocker l'auto-complétion choisie, et d'afficher les choix les plus populaires d'abord la prochaine fois que la saisie semi-automatique est tentée sur le même objet.