Python-如果在类中使用了未声明的变量,则强制执行错误

the*_*man 3 python class class-members

考虑以下Python代码:

class a_class:
    defined_var = 1

    def a_function(self):
        self.defined_var = 2
        self.undefined_var = 3 

Run Code Online (Sandbox Code Playgroud)

为在类的开头没有声明的变量赋值(然后隐式声明)的可能性(就像我undefined_var在上一个示例中所做 的那样)给我带来了一些问题,因为对于大型类,我忘记了什么我定义了我没有的东西。

我知道这个问题听起来很愚蠢。我已经使用C / C ++ / Java开发了很长时间,其中必须在类中定义变量。

有办法避免这种情况吗?我的意思是,我想要一个类似C / C ++ / Java的行为,如果我使用未定义的变量,则会出现错误。

Ara*_*Fey 5

默认情况下,python实例具有__dict__-字典,用于存储对象的所有属性。这就是允许他们存储任意属性的原因。您可以__dict__通过定义禁止创建__slots__。这是一个类级变量,列出了该类实例可以具有的所有属性的名称。如果类具有__slots__,则尝试分配给未定义的属性将引发异常。

例:

class MyClass:
    __slots__ = ['defined_var']

    def a_function(self):
        self.defined_var = 2

obj = MyClass()
obj.a_function()
obj.undefined_var = 3  # throws AttributeError
Run Code Online (Sandbox Code Playgroud)