Ferramentas para ajudar os desenvolvedores a ler a hierarquia de classes mais rapidamente

Eu principalmente gasto tempo em Python / Django e Objective-C / CocoaTouch e js / jQuery no decorrer do meu trabalho diário.

Meu editor de escolha évim para Python / Django e js / jQuery excode para Objective-C / CocoaTouch.

Um dos gargalos na minha velocidade de desenvolvimento é o ritmo em que eu leio o código existente, particularmente as bibliotecas de código aberto que eu uso.

No Python / Django, por exemplo, quando encontro alguns novos recursos introduzidos pelos desenvolvedores do django, fico curioso e começo a explorar a base de código manualmente. Por exemplo, quando as visualizações baseadas em classes foram introduzidas a partir do django 1.3, referência -https://docs.djangoproject.com/en/dev/topics/class-based-views/ - Vou verificar o código de exemplo mostrado:

<code>from django.views.generic import TemplateView

class AboutView(TemplateView):
    template_name = "about.html"
</code>

E experimente em um dos meus projetos. Mais importante, estou curioso sobre o que acontece nos bastidores, então vou cavar o código fonte -

<code># django/views/generic/__init__.py file

from django.views.generic.base import View, TemplateView, RedirectView
from django.views.generic.dates import (ArchiveIndexView, YearArchiveView, MonthArchiveView,
                                     WeekArchiveView, DayArchiveView, TodayArchiveView,
                                     DateDetailView)
from django.views.generic.detail import DetailView
from django.views.generic.edit import FormView, CreateView, UpdateView, DeleteView
from django.views.generic.list import ListView


class GenericViewError(Exception):
    """A problem in a generic view."""
    pass
</code>

A partir daqui, vou rastreá-lo de volta para o arquivo django / views / generic / base.py e descobrir exatamente o queTemplateView classe faz: -

<code>class TemplateView(TemplateResponseMixin, View):
    """
    A view that renders a template.
    """
    def get_context_data(self, **kwargs):
        return {
            'params': kwargs
        }

    def get(self, request, *args, **kwargs):
        context = self.get_context_data(**kwargs)
        return self.render_to_response(context)
</code>

E aqui está isso mostra queTemplateView classe herda deTemplateResponseMixin eView aulas ... e eu continuo cavando ainda mais ... e assim por diante ...

O problema é que este é um processo extremamente ineficiente e lento (para "seguir" hierarquias de classes manualmente e abrir cada arquivo ao longo do caminho).

Então a questão é - existe uma ferramenta de interface / usuário fácil (ou outra solução visual) que analisa o código Python em um projeto específico e visualiza hierarquias de classe que eu posso inspecionar facilmente clicando em uma classe específica que eu estou interessado em ler sobre?

Nota que estou ciente do shell IPython, mas que não parece tão fácil de usar quanto uma ferramenta de exibição visual.

Por exemplo, háF-Script no mundo da programação Objective-C / iOS / Mac, que não apenas fornece um shell (muito parecido com o shell python ou IPython), mas fornece uma maneira visual para os desenvolvedores examinarem as hierarquias de classe.

Captura de tela de referência: -

Então, existe uma ferramenta de visualização de hierarquia de classes (especificamente para o Python, mas ainda melhor se for genérica e puder ser usada para idiomas diferentes)? Quais são os seus métodos para se levantar de forma eficiente ao ler o código fonte de código aberto?

ATUALIZADA

Por conselho abaixo, eu tenteictags e plugin vimtaglist e eu pude usar:TlistOpen para abrir um buffer de lado no vim assim:

Isso parece muito legal:TlistOpen agora essencialmente me mostra todas as classes e funções que estão disponíveis no meu buffer atualmente aberto.

Meu problema agora é que quando eu tento fazerCtrl] enquanto meu cursor está ligadoTemplateView, Estou tendo o erro a seguir:-

O que estou fazendo de errado? É porque meu código fonte do django está em umvirtualenv? Ou há algo específico que eu tenho que fazer para fazerctags/taglist "ciente" do código fonte do django?

questionAnswers(3)

yourAnswerToTheQuestion