Python强烈输入列表

Han*_*ani 4 python eclipse list strong-typing

我正在使用eclips进行python,我遇到了一个问题.我有许多具有许多属性的类,并且需要一个来自我声明的类的对象列表.问题是:当我从列表中访问任何项目时,IDE不知道它的类型,因为在python中我们没有用它的类型声明变量,所以没有自动完成,我必须去类复制属性名称.让想法更清晰:

class AutomataBranch(object):
    def __init__(selfparams):
        self.Name="";
        self.nodes=[];

class LanguageAutomata(object):    
    def __init__(selfparams):
        self.cfgAutomata=[];#This has AutomaBranch Type
Run Code Online (Sandbox Code Playgroud)

现在在LanguageAutomata类中的任何方法,如果我写: cfgAutomata.然后它不会给我Name属性是否有任何解决方案?

Dan*_*man 5

您不应该编写适合您的IDE的代码 - IDE应该支持您.如果您遇到问题,请切换.有很多编辑器可以正确处理Python.

  • 没有IDE可以使用上面的代码找到self.cfgAutomata [0]的类型,因为无法知道它的类型(在Object的子类之外). (2认同)

e-s*_*tis 5

Python 是强类型的,Python 列表也是强类型的。你的问题来自于Python是动态类型的。因此 var 可以包含任何类型,因此 IDE 无法猜测参数的类型,也无法为您提供方法的代码完成。

就是这样,没有干净的解决方法。如果这是一个问题,那么也许动态语言不是您偏爱的工具,您应该使用适合您的开发风格的语言。每个人都有适合的工具。


Han*_*ani -1

我想我找到了一个很好的易于管理的解决方案。实际上它很微不足道,但可能会有所帮助(我现在使用它)。当我想访问列表时,我将要访问的对象分配给变量 ex:

x = AutomataBranch() 
x = self.cfgAutomata[i] 
Run Code Online (Sandbox Code Playgroud)

第一行仅用于让 IDE 知道它x是来自AutomatBranch类型。之后,当我按下时x,所有方法和属性都会可视化。

我想这是多么好的事情啊。

  • 这是一个非常糟糕的主意。以特殊方式编码以使自动完成工作正常,这太疯狂了。 (3认同)
  • 也许你是对的,但问题不仅仅在于我一直使用 Microsoft Visual Studio,突然更换到新的 IDE 并不那么容易。当然,我会在代码工作后重构它。谢谢你的建议。哈尼·阿尔穆斯利.... (3认同)