【问题标题】:Object Memory Management Python Vs Java对象内存管理 Python 与 Java
【发布时间】:2018-12-20 03:31:00
【问题描述】:

有人能解释一下 Python 在类中创建对象期间管理内存管理的方式吗?

例如在java中我们只能声明成员变量并且初始化部分发生在构造函数中。这意味着构造对象时使用的内存。

但在 python 中,我们可以在 init 方法之外初始化一个类变量。这些数据存储在哪里?

【问题讨论】:

  • 有点不清楚你指的是什么。您能否提供一些您想要解释的行为的小代码示例?
  • 类变量存储在类命名空间MyClass.__dict__vars(MyClass)中。实例变量存储在实例的命名空间中:my_instance = MyClass() 然后my_instance.__dict__vars(my_instance)。变量在赋值时就存在,并且没有变量声明。

标签: java python class object memory


【解决方案1】:

作为先导,这个问题已经回答here,这也可能是一个很好的reference。但是,我将尝试再次解释它。 Python 中的 init 方法是为常规使用而设计的,尽管它是一种特殊方法,因为它保留在方法的开头,但它不是必需的。 Python 中的内存管理涉及一个包含所有 Python 对象和数据结构的私有堆。如果您要在 init 方法声明之外初始化一个类变量,它将与那些在 init 方法中初始化的变量一起简单地存储在堆中。希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-09
    • 1970-01-01
    • 1970-01-01
    • 2011-07-26
    • 1970-01-01
    相关资源
    最近更新 更多