我主要在日常工作中花时间在Python / Django和Objective-C / CocoaTouch和js / jQuery上。
我选择的编辑器是{/ 1}}用于Python / Django和js / jQuery,vim
用于Objective-C / CocoaTouch。
我的开发速度的一个瓶颈是我读取现有代码的速度,特别是我使用的开源库。
在Python / Django中,当我遇到django开发人员引入的一些新功能时,我很好奇并开始手动探索代码库。例如,当从django 1.3开始引入基于类的视图时,引用 - https://docs.djangoproject.com/en/dev/topics/class-based-views/ - 我将查看显示的示例代码:
xcode
在我的一个项目上尝试一下。更重要的是,我对幕后发生的事情感到好奇,所以我将深入研究源代码 -
from django.views.generic import TemplateView
class AboutView(TemplateView):
template_name = "about.html"
从这里开始,我将向后追溯到django / views / generic / base.py文件,找出# 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
类的确切内容: -
TemplateView
这里显示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)
类继承自TemplateView
和TemplateResponseMixin
类......我继续深入挖掘......等等......
问题是,这是一个非常低效和缓慢的过程(手动“跟随”类层次结构并沿途打开每个文件)。
所以问题是 - 是否有一个简单的方法/ UI工具(或其他可视化解决方案)解析特定项目中的Python代码并可视化类层次结构,然后我可以通过“单击”特定类来轻松检查有兴趣阅读一下吗?
注意我知道IPython shell,但它看起来并不像用户视觉显示工具那样友好。
例如,Objective-C / iOS / Mac编程世界中有View
,它不仅提供了一个shell(很像python或IPython shell),而且为开发人员提供了一种内省类的可视方式hierachies。
参考截图: -
那么是否有一个类层次结构可视化工具(专门用于Python,但如果它是通用的并且可以用于不同的语言,那就更好了)???在阅读开源代码时,你有什么方法可以有效地加快速度?
已更新
根据下面的建议,我尝试了F-Script
和vim插件ctags
,我可以使用taglist
在vim中打开一个侧缓冲区,如下所示: -
这看起来很酷,因为:TlistOpen
现在基本上显示了我当前打开的缓冲区中可用的所有类和函数。
我现在的问题是,当我的光标在:TlistOpen
上时,当我尝试执行 Ctrl ] 时,我收到以下错误: -
我做错了什么?是因为我的django源代码是TemplateView
吗?或者,我需要做些什么才能让virtualenv
/ ctags
“了解”django源代码?
答案 0 :(得分:4)
标签确实是一个非常好的开始。 (它上面的东西太多了,所以我只会为你提供一个额外的关键字来搜索:ctags。)
在Vim中,它以 Ctrl +] 结束(在基本情况下)转到类/函数定义并返回 Ctrl + T 。
答案 1 :(得分:3)
我一直在使用exuberant ctags和taglist来获取vim。使用 ctrl ] 跳转到当前窗口中的类定义, ctrl w ] 跳转到拆分窗口中的定义。
您可以通过自制软件安装充满活力的ctags:
brew install ctags
请务必使用自制的/usr/local/bin
安装的那个,而不是ctags
中的旧版/usr/bin
。
将--python-kinds=-vi
放在~/.ctags
中以跳过Python文件的索引变量和导入也很有帮助。
另一种替代方法是使用cscope
或pyscope
的变体,但必须在启用cscope
选项的情况下编译vim。
答案 2 :(得分:3)
Python附带的IDLE编辑器具有an effective class browser,可以有效地导航给定模块中的所有内容。我相信在inspect module和pyclbr module的帮助下修改该工具以导航完整的类层次结构并不困难。