我对 .NET 对象及其用于引用与值类型的框架非常满意。python 对象与 .NET 对象相比如何?具体来说,我想知道相等性obj1 == obj2
、散列能力(即能够放入字典)和复制。
例如,在 .NET 中默认情况下,所有对象都是引用类型,它们的相等性和哈希码由它们在内存中的地址确定。此外,将变量分配给现有对象只会使其指向内存中的该地址,因此不会发生昂贵的复制。似乎这对于python来说是一样的,但我并不完全确定。
编辑:
- 平等
is
检查引用相等,==
检查值相等(但是值相等对对象意味着什么?)
我可以从 2000 年写的 effbot中找到一些有用的信息:
对象
所有 Python 对象都有这个:
- 唯一标识(一个整数,由 返回
id(x)
)- 一个类型(由 返回
type(x)
)- 某些内容您无法更改身份。
您无法更改类型。
某些对象允许您更改它们的内容(即不更改标识或类型)。
某些对象不允许您更改其内容(更多内容见下文)。
该类型由一个类型对象表示,它更了解这种类型的对象(它们通常占用多少字节的内存,它们有哪些方法等)。