例如,如果我使用@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的解释器探索模块的功能。
我该如何实现?