【发布时间】:2019-03-01 12:18:01
【问题描述】:
我想在 ipython 和 jupyter 中对以下具有只读类属性的代码使用自动完成功能(使用 @property):
class A(object):
def __init__(self):
self.__value = 1
@property
def value(self):
return self.__value
class B(object):
def __init__(self):
self.a = A()
class C(object):
def __init__(self):
self.__a = A()
@property
def a(self):
return self.__a
b = B()
c = C()
两者
>>> b.a.value
和
>>> c.a.value
运作良好。但 ipython 和 jupyter notebook 的自动完成功能仅适用于
>>> b.a.value
和
>>> c.a.
没有选项卡自动完成。
如何在ipython和jupyter notebook中重写代码实现c.a.<tab> -> c.a.value自动补全?
【问题讨论】:
-
我认为这是不可能的,因为当您点击
<tab>时,自动完成器不会执行表达式c.a。它无法知道property函数是否有副作用。 -
x=c.a,x.<tab>可能工作 -
UPD 从 Spyder 启动的 IPython 控制台很好地完成了
c.a.<tab> -> c.a.value。也许 Spyder 使用绳索,但香草 ipython 和 jupyter 使用绝地来做这个?
标签: python jupyter-notebook ipython jupyter jupyter-console