后续类实例具有相同的对象 ID
创建类的多个实例而不为其分配名称时,Python 会为它们分配相同的 ID他们所有人。这种行为乍一看可能会令人惊讶,这是由于 Python 中对象生命周期的概念所致。
对象的 ID 仅在该对象的生命周期内确保其唯一性。在提供的示例中,someClass() 在单个语句的范围内被多次调用。每次调用都会创建一个新对象。但是,由于这些对象未分配给任何变量,并且它们的作用域在语句执行完成后立即结束,因此它们可用于垃圾回收。
在 CPython(Python 的默认实现)中,垃圾回收使用引用计数。此外,对象的 ID 与其内存位置相关。这些因素的组合解释了为什么 someClass() 的后续实例共享相同的 ID:当在同一函数作用域中创建新对象时,内存会被释放并重用。
要解决此行为并确保类具有不同的 ID实例,考虑将对象保留在数据结构中或在类中实现自定义 ID 方案。
以上是为什么连续的未命名 Python 类实例共享相同的对象 ID?的详细内容。更多信息请关注PHP中文网其他相关文章!