gpt4 book ai didi

python - python中的实际对象及其引用

转载 作者:太空宇宙 更新时间:2023-11-04 01:33:19 27 4
gpt4 key购买 nike

我对实际对象及其在 python 中的引用有点困惑。谷歌搜索了很多但没有得到我需要的东西。

对象创建是否也返回对该对象的引用?为什么我问这个是因为我能够使用带有 . 定界符的实际对象来调用它的方法。我们通常使用对象的引用来调用方法。一个例子可能会给出一个清晰的概念我在问什么。

l = [2,4,1,3] # 'l' 是对实际对象的引用。对吧?

RHS 部分是否创建对象并返回对将分配给 LHS 的对象的引用?

因为我可以同时使用 list.sort()[2,4,1,3].sort() 对列表进行排序。 [2,4,1,3] 是实际对象还是在创建对象时产生引用?

类的情况也类似。

obj=SomeClass() #obj 是对 SomeClass() 创建的对象的引用。

SomeClass() 是否在创建对象的同时返回一个引用?

因为我们可以同时使用obj.method1()SomeClass().method1来调用方法。

最佳答案

我建议你阅读 The Python Language Reference "Data Model" .

在 python 中,当你创建一个对象时,它是在堆中分配的。如果您将对象分配给某个变量,您实际上是在标记它。一个对象可能有多个标签。当对象丢失所有标签时,它可能会被 python 垃圾收集器销毁。因此,您的问题的答案 -- [1,2,3] 返回任何引用,而只是创建新对象。

编辑:

其实,在

[1, 2, 3].sort()

存在对 [1, 2, 3] 列表的引用,它保留在 VM 的堆栈中。但是,如前所述,它没有返回。但是在:

l = [1, 2, 3]

此引用从 VM 的堆栈复制到 l。

关于python - python中的实际对象及其引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12193237/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com