Python 强类型列表
我在用Eclipse写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这个属性的提示。有没有什么解决办法呢?
4 个回答
2
我想你是想说“静态类型”,而不是“强类型”。其实,Python是强类型的,只是你在编译时不知道它的类型是什么。
话说回来,你真的需要放弃寻找那些能像Java或C#那样好用的IDE(集成开发环境)来写Python的想法。因为Python的动态类型特性让这变得很困难。实际上,我发现强大的IDE有时候反而会让人觉得麻烦,而不是帮助。
4
八年后,我们终于在Python 3.6中找到了一个解决方案。
PEP484 让你可以给变量加上注释,主要是为了帮助开发环境和代码检查工具:
修改了@Hani的回答:
x : AutomataBranch = self.cfgAutomata[i]
现在,任何好的开发环境都会识别这些注释,以突出显示错误并提供自动补全功能。
5
Python是一种强类型的编程语言,Python中的列表也是如此。你的问题出在Python是动态类型的这点上。也就是说,一个变量可以包含任何类型的数据,因此没有哪个开发工具可以准确猜测你参数的类型,也无法为你提供方法的代码补全功能。
事情就是这样,没有简单的解决办法。如果这对你来说是个问题,那可能动态语言并不适合你,你可以考虑使用更符合你开发风格的工具。总有适合每个人的工具。