我的课程有3个大字典,一个出现在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 - Python类。键作为self.key存在,但不存在于self .__ dict__,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/25248372/