自动完成,带有属性装饰器的封装

时间:2019-03-07 08:47:06

标签: python ipython

例如,如果我使用@property封装“私有”值,我会注意到它使像IPython这样的解释器无法自动完成该值的属性。

例如:

class ClassA(object):
    def __init__(self):
        pass

    def do_print(self):
        print("printing")

class ClassB(object):
    def __init__(self):
        self._val = ClassA()

    @property
    def val(self):
        return self._val

现在,如果我使用IPython创建ClassB实例,并尝试通过“ val”访问函数“ do_print”,它将不会自动完成。如果我已经知道“ do_print”在那里,它确实可以工作。

我理解为什么会发生这种情况,我只是想知道是否有办法使之工作,因为在编写模块时,我想使用@property,但我也希望我的用户能够完全使用类似IPython的解释器探索模块的功能。

我该如何实现?

0 个答案:

没有答案