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

标签 python arrays class oop

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

相关文章:

python - 理解 pyvmomi 中的 vim

python - tkinter 将小部件放入框架中

python - 在 Python 中关联两个 3D 数组

具有模板类默认参数的 C++17 别名模板

java - GreenDroid PagedView - 多页(不同布局)帮助.. Android SDK

python - SQLAlchemy:尝试保存非唯一值后重新保存模型的唯一字段

python - @pyqtSignature() 和@pyqtSlot() pyqt 装饰器有什么区别

c# - 使用 Singleton 的动态长度数组

javascript - 如何在不使用全局变量的情况下编辑待办事项列表 函数式编程 Vanilla JS

java - 我的一个类(class)不会输出任何内容