我的类包含三个大字典,一个出现在 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}
关于 python 类。 key 作为 self.key 存在,但不存在于 self.__dict__ 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25248372/