可以在类中添加静态类型吗?

2024-04-29 04:59:03 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试这样做,当我设置一个变量,当我拼写错误时,我会得到一个编译类型的错误。到目前为止,在我所有的尝试中,变量都是创建的。在

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

下面是一个例子:

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

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


Tags: 模块self类型字典fooinitvaluedef
3条回答

你要找的是静态代码分析。在这种情况下,您应该看看类似PyLint

请参见this question了解进一步的讨论。在

注意:Python已经是强类型了,这导致了混乱。在

请注意,Python是strously类型化的,请参见why的这个问题。你所追求的是静态代码分析的一部分。在

有些IDE会检查是否在Eclipse和PyCharm下设置了see PyDev变量名,而使用IDE是唯一一个在键入时发现这些错误的waty。在

PyLint这样的代码分析器可以在代码上运行,这些分析器会发现一些错误。在

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'

{a1中的更多信息}

TL;DR:可以为这个类变量分配一个string、iterable或带有实例使用的变量名的字符串序列。如果在新样式的类中定义,__slots__为声明的变量保留空间,并阻止为每个实例自动创建__dict__和{}。

相关问题 更多 >