使用参数的 class 方法的最佳实践

Best practice for using argument's class method

我正在尝试找出以下问题的解决方案:

#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'是class'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

但是,为了代码的可读性,我宁愿使用 .格式相信大家也一样。但是不知道大家是怎么处理的。很多时候我必须进入导入的文件并复制和粘贴方法名称,这很繁琐。显然,我遗漏了每个人都知道的东西。顺便说一句,这是我第一次在 Whosebug 上 post。我希望这是一个有效的摆在这里。

我不知道有什么方法可以让编辑器猜出您期望的类型。但是由于 Python 是无类型的,所以它永远只是猜测。

但是请注意,使用 class 显式方法的解决方法并不是一个好的做法。如果您的代码有一天会发展,它将不允许您在将来传递 ExampleA 的扩展。 所以它不仅仅是可读性

LiClipse/PyDev 可以识别文档字符串中的类型提示(如 http://www.pydev.org/manual_adv_type_hints.html) or using the new PEP 484 type hints (https://www.python.org/dev/peps/pep-0484/ 中所述)...因此,如果您使用其中之一,它应该可以工作。

注意:我个人更喜欢文档字符串,但这可能是个人喜好问题,LiClipse/PyDev.

应该可以识别两者