Wat*_*nMe 1 python arrays oop class
我的班级包含三个大词,一个出现在self.__dict__另外两个不是.
例:
class MyClass:
big_matrix = {}
side_array = {}
map_of_data = {}
def __init__( self ):
# etc...
Run Code Online (Sandbox Code Playgroud)
当我试图转储self.__dict__到终端时,我成功地只看到了big_matrixnopt和其他的dicts.
没有一个数组声明__init__,稍后在其他函数中声明.
请帮帮我?
您应该初始化变量__init__并将它们分配给对象self,以使它们属于实例名称空间(在__dict__对象上调用时显示的名称空间).
否则它们不是对象实例名称空间的一部分,而是类名称空间的一部分.
您可能big_matrix在实例命名空间中看到,因为您正在创建self.big_matrix类中的其他位置.
class MyClass:
def __init__( self ):
self.big_matrix = {}
self.side_array = {}
self.map_of_data = {}
Run Code Online (Sandbox Code Playgroud)
变量属于实例名称空间:
>>> print MyClass().__dict__
{'big_matrix': {}, 'side_array': {}, 'map_of_data': {}}
Run Code Online (Sandbox Code Playgroud)
该类在其命名空间中没有任何变量
>>> print MyClass.__dict__
{}
Run Code Online (Sandbox Code Playgroud)
class MyClass:
big_matrix = {}
side_array = {}
map_of_data = {}
Run Code Online (Sandbox Code Playgroud)
该实例的名称空间中没有任何变量:
>>> print MyClass().__dict__
{}
Run Code Online (Sandbox Code Playgroud)
所有变量都属于类命名空间(以及类使用的其他变量):
>>> print MyClass.__dict__
{'big_matrix': {}, 'side_array': {}, '__module__': '__main__', 'map_of_data': {}, '__doc__': None}
Run Code Online (Sandbox Code Playgroud)