gpt4 book ai didi

.net - Python 对象与 .NET 对象的比较

转载 作者:太空宇宙 更新时间:2023-11-04 10:55:05 25 4
gpt4 key购买 nike

我非常熟悉 .NET 对象及其引用与值类型的框架。 python 对象与 .NET 对象相比如何?具体来说,我想知道等式 obj1 == obj2、散列能力(即能够放入字典)和复制。

例如,默认情况下,在 .NET 中,所有对象都是引用类型,它们的相等性和哈希码由它们在内存中的地址确定。此外,将变量分配给现有对象只会使其指向内存中的该地址,因此不会发生昂贵的复制。这似乎对 python 来说是一样的,但我不完全确定。

编辑:

我找到了一些 useful info from the effbot写回 2000 年:

Objects

All Python objects have this:

  • a unique identity (an integer, returned by id(x))
  • a type (returned by type(x))
  • some content You cannot change the identity.

You cannot change the type.

Some objects allow you to change their content (without changing the identity or the type, that is).

Some objects don’t allow you to change their content (more below).

The type is represented by a type object, which knows more about objects of this type (how many bytes of memory they usually occupy, what methods they have, etc).

最佳答案

Equality

:- 未定义 __cmp____eq__ 方法的对象 如果您尝试比较它会引发错误 从对象 继承其比较对象。这意味着执行 a > b 等同于执行 id(a) > id(b)

is 关键字也用于查看两个变量是否指向同一个对象。另一方面,== 运算符调用它正在比较的对象的 __cmp____eq__ 方法。

Hashability

:- 如果为对象定义了 __hash__ 方法,则该对象是可散列的。所有基本数据类型(包括字符串和元组)都定义了散列函数。如果没有为类定义 __hash__ 方法,该类将从对象 object 继承它的哈希值。

Copying

:- copycopy.deepcopy,以及它们各自的类方法 __copy____deepcopy__。使用 copy 复制单个对象,使用 deepcopy 复制对象的层次结构。 深拷贝

根据 agf 的建议进行的编辑。

关于.net - Python 对象与 .NET 对象的比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10453224/

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