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

2024-09-24 00:28:01 发布

您现在位置:Python中文网/ 问答频道 /正文

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

#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\u gr…”时,我想让编辑器的自动填充功能启动,以建议使用“my\u great\u method\u a()”。然而,它实际上并不意味着什么

我明白为什么,因为编辑不知道“inst\u 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

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


Tags: pyselfmydefpassbeargumentwill
2条回答

LiClipse/PyDev可以识别docstring中的类型提示(如http://www.pydev.org/manual_adv_type_hints.html)或使用新的pep484类型提示(https://www.python.org/dev/peps/pep-0484/)。。。所以,如果你用其中一个,它应该会起作用

注意:我个人更喜欢docstring,但这可能是一个品味的问题,LiClipse/PyDev应该能识别这两种语言

我不知道怎么让这个编辑猜出你想要的类型。但由于Python是非类型化的,所以它总是只能猜测

但是请注意,使用类显式方法的变通方法并不是一个好的实践。它将不允许您在将来传递ExampleA的扩展,以防将来您的代码会发生变化。 所以不仅仅是可读性

相关问题 更多 >