Python强烈输入列表

时间:2009-08-17 14:53:59

标签: 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

现在在LanguageAutomata类的任何方法中,如果我写的: cfgAutomata。然后它不会给我 Name 属性 对此有什么解决方案吗?

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:4)

Python是强类型的,Python列表也是如此。你的问题来自于Python是动态类型的。因此var可以包含任何类型,因此没有IDE可以猜出参数的类型,也没有给出方法的代码完成。

就是这样,没有干净的解决方法。如果这是一个问题,那么动力学语言可能不是你的偏好工具,你应该使用适合你的发展风格的东西。每个人都有工具。

答案 2 :(得分:2)

我认为你的意思是说“静态打字”而不是“强打字”。 Python是强类型的。你只是不知道编译时该类型是什么。

话虽如此,你真的需要放弃这样的想法,即你将找到任何适用于Python的IDE,就像它们对Java或C#一样。 Python的动态类型使这很困难。事实上,我倾向于发现强大的IDE比帮助更重要。

答案 3 :(得分:1)

8年后,我们实际上在Python 3.6中有了一个解决方案。

PEP484允许您主要为IDE和linting注释变量:

修改@Hani的回答:

x : AutomataBranch = self.cfgAutomata[i] 

现在任何好的IDE都可以选择它来突出显示错误并允许自动完成。

答案 4 :(得分:-1)

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

x = AutomataBranch() 
x = self.cfgAutomata[i] 

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

我认为这有点好。