4

我正在为 python 使用 eclips,我遇到了一个问题。我有许多具有许多属性的类,并且想要一个来自我声明的类的对象列表。问题是:当我访问列表中的任何项目时,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属性有什么解决方案吗?

4

5 回答 5

4

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

于 2009-08-17T14:59:19.017 回答
4

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

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

于 2009-08-18T11:56:20.953 回答
3

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

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

修改@Hani 的回答:

x : AutomataBranch = self.cfgAutomata[i] 

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

于 2018-04-03T10:47:36.463 回答
2

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

话虽如此,您确实需要放弃这样的想法:您将找到任何适用于 Python 的 IDE,就像它们适用于 Java 或 C# 一样。Python 的动态类型使这变得困难。事实上,我倾向于发现功能强大的 IDE 与其说是一种帮助,不如说是一种负担。

于 2009-08-18T11:58:57.017 回答
-1

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

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

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

我认为这是一些多么好的。

于 2009-08-18T11:43:32.150 回答