在python文档中,id()函数:
返回对象的“标识”。这是一个整数(或长整数),它保证该对象在其生存期内是唯一的和常量的。两个寿命不重叠的对象可能具有相同的id()值。
CPython实现细节:这是内存中对象的地址。
这很清楚,我明白。它将python类实例传递给id函数,它返回该对象的“identity”/ address。但是,如果将python类名传递给id函数。它还能返回什么?从例子。
class Abc:
value = 0
x = Abc()
id(x) # -> 65097560
id(Abc) # -> 67738424我知道65097560是对象x的内存地址。但是,id(Abc) / 67738424的含义是什么?
发布于 2021-02-08 02:35:38
Classes are objects themselves。它们是metaclass type的实例。(type也用于确定某物的类型。)
>>> class Abc: pass
...
>>> type(Abc)
<class 'type'>
>>> id(Abc)
39363368在Python2中,旧式类是classobj的实例。
>>> class Old: pass
...
>>> type(Old)
<type 'classobj'>
>>> id(Old)
140369496387664
>>> class New(object): pass
...
>>> type(New)
<type 'type'>
>>> id(New)
94676790299104一般来说,everything is an object in Python包括像id()本身这样的函数、内置类型/类(如list )和模块(如sys )。尽管有一些例外,如关键字和运算符。
https://stackoverflow.com/questions/66091209
复制相似问题