我正在尝试找出以下问题的解决方案:
#ExampleA.py
class a:
def my_great_method_A(self):
pass
#ExampleB.py
def functionX(inst_a): #Argument 'inst_a' will be always ExampleA.py's class a.
inst_a.my_great_method_A() #<---
我使用Liclipse作为python编辑器。当我输入最后一行“a.my_gr ...”时,我想让编辑器的自动填充功能启动,建议使用“my_great_method_A()”。但是,它实际上没有任何建议。
我理解为什么,因为编辑器没有任何线索,如果'inst_a'是类'a'。为了解决这个问题,我可以执行以下操作来使自动填充工作:
#ExampleA.py
class a:
def my_great_method_A(self):
pass
#ExampleB.py
import ExampleA
def functionX(inst_a): #Argument 'inst_a' will be always ExampleA.py's class a.
ExampleA.a.my_great_method_A(inst_a) #<--- then autofilling works
但是,为了代码的可读性,我宁愿使用。格式,我相信每个人都一样。但我不知道每个人都是如何应对这一点的。很多时候我必须进入导入的文件并复制&amp;粘贴方法名称,这很乏味。显然我错过了每个人都知道的事情。顺便说一下,这是我第一次发布stackoverflow。我希望这是一个有效的事情。
答案 0 :(得分:0)
我不知道如何让这位编辑猜出你期待的类型。但是由于Python是无类型的,它总是只能猜测。
但请注意,使用类显式方法的解决方法不是一个好习惯。如果您的代码有一天会发展,它将来不允许您传递ExampleA的扩展。 所以它不仅仅是可读性
答案 1 :(得分:0)
LiClipse / PyDev可以识别文档字符串中的类型提示(如http://www.pydev.org/manual_adv_type_hints.html中所述)或使用新的PEP 484类型提示(https://www.python.org/dev/peps/pep-0484/)...所以,如果你使用其中一个,那么应该工作。
注意:我个人更喜欢docstrings,但它可能是一个品味问题,而且两者都应该被LiClipse / PyDev识别。