vim 中的 python 类成员没有全能补全吗?
我想在 python 中为我的类创建标签(ctags 5.8)文件。对于函数,以及在类定义之外定义的类成员,omnicompletion 工作正常。但是,如果我在构造函数中定义数据成员(self.x=2),我看不到 ctags 完成?
class A(object):
def __init__(self):
self.x = "whatever" # x will not seen in ctags/omnicompletion!!!
我做错了什么吗?为什么没有全能补全(ctags 文件看起来没问题)?
I want to create tags (ctags 5.8) file for my classes in python.For functions, and class members defined outside the class definition omnicompletion works ok. However if I define data member in a constructor ( self.x=2 ) I cannot see the ctags completion ?
class A(object):
def __init__(self):
self.x = "whatever" # x will not seen in ctags/omnicompletion!!!
Am I doing sth wrong ? Why there is no omnicompletion (ctags file looks ok) ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果我正确理解你的问题,你总是可以在类定义中添加属性:
这样每个阅读你的代码的人都可以看到类具有哪些属性(你称它们为“类成员”)。
更新:检查
生成的标签文件如下所示:
可以看出,
x
属性有自己的记录。还通过首先创建与 emacs 兼容的标签文件来检查 Emacs:(
这创建了 TAGS 文件)
在 Emacs 内部:
...瞧!光标位于
x = None
行。另外,您的原始代码片段不起作用。所以我在类命名空间中初始化属性的建议是有效的。
If I understood your problem right, you can always add attributes in the class definition:
This way everyone reading your code sees, which attributes (you are calling them "class members") a class has.
UPDATE: checked with
The resulting tags file looks like this:
As can be seen,
x
attribute has its own record.Also checked with Emacs by creating emacs-compatible tags file first:
(this created TAGS file)
Inside Emacs:
...and voila! Cursor is at
x = None
line.Also, your original snippet doesn't work. So my advice to initialize attribute in the class namespace is valid.