我的类包含三个大字典,一个出现在 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}
