是否可以在类中添加静态类型?

时间:2013-12-02 15:06:33

标签: python

我试图让它成为当我设置一个变量时,当我拼错它时,我得到一个编译类型的错误。在我到目前为止的所有尝试中,变量才刚刚创建。

我不介意将变量放在类,模块,字典或任何组合中。我只想在拼写错误上有编译时错误

这是一个例子:

class Foo:
   bar=""
   def __init__(self,bar_value):
     self.barr=bar_value # want syntax error here
the_foo=Foo("hellow")

编辑:我的术语错了:我的意思是静态输入

3 个答案:

答案 0 :(得分:2)

您正在寻找的是静态代码分析。在这种情况下,您应该查看PyLint

之类的内容

有关进一步的讨论,请参阅this question

注意:Python已经强类型化,导致混淆。

答案 1 :(得分:2)

请注意,Python的输入很明显,请参阅why的这个问题。您所追求的是静态代码分析的一部分。

某些IDE确实检查了变量名称是否已经设置,请参阅Eclipse和PyCharm下的PyDev,并且使用IDE是我希望唯一能够在输入时发现这些错误的人。

代码分析器如PyLint可以在代码上运行,并且会发现一些错误。

答案 2 :(得分:2)

Python是强类型的 - 使用类最接近的是使用__slots__限制属性创建,例如:

class Foo(object):
    __slots__ = ['bar']
    def __init__(self, bar_value):
        self.barr = bar_value

the_foo = Foo('bar value')
# AttributeError: 'Foo' object has no attribute 'barr'

有关Python Data model

中插槽的详情

TL; DR:可以为此类变量分配字符串,可迭代或具有实例使用的变量名称的字符串序列。如果在新样式类中定义,__slots__会为声明的变量保留空间,并阻止为每个实例自动创建__dict____weakref__