Skip to main content
 首页 » 编程设计

python 类。 key 作为 self.key 存在,但不存在于 self.__dict__ 中

2025年05月04日15bonelee

我的类包含三个大字典,一个出现在 self.__dict__ 中,另外两个不出现。

例子:

class MyClass: 
  big_matrix = {} 
  side_array = {} 
  map_of_data = {} 
  def __init__( self ): 
      # etc... 

当我尝试将 self.__dict__ 转储到终端时,我成功地只看到了 big_matrix 而没有选择其他指令。

__init__ 中没有声明一个数组,稍后在其他函数中声明。

请帮帮我好吗?

请您参考如下方法:

您应该在 __init__ 中初始化您的变量并将它们分配给对象 self为了使它们属于实例命名空间(在对象上调用 __dict__ 时显示的命名空间。

否则它们不是您的对象实例 命名空间的一部分,而是类 命名空间的一部分。

可能你看到了big_matrix在您的实例命名空间中,因为您正在创建一个 self.big_matrix类里面的其他地方。


实例命名空间中的变量

class MyClass: 
    def __init__( self ): 
        self.big_matrix = {} 
        self.side_array = {} 
        self.map_of_data = {} 

变量属于实例命名空间:

>>> print MyClass().__dict__  
{'big_matrix': {}, 'side_array': {}, 'map_of_data': {}} 

该类的命名空间中没有任何变量

>>> print MyClass.__dict__ 
{} 

类命名空间中的变量

class MyClass: 
    big_matrix = {} 
    side_array = {} 
    map_of_data = {} 

该实例在其命名空间中没有任何变量:

>>> print MyClass().__dict__  
{} 

所有变量都属于类 命名空间(加上该类使用的其他变量):

>>> print MyClass.__dict__ 
{'big_matrix': {}, 'side_array': {}, '__module__': '__main__', 'map_of_data': {}, '__doc__': None}