为什么Python内置组件与“ is”关键字进行交互的方式有所不同?

时间:2018-10-21 21:49:07

标签: python

在尝试“ is”关键字时,遇到了一些奇怪的事情。当我使用Python内置函数创建相同的对象时,Python会为其分配相同的ID:

>>> a = str()
>>> b = str()
>>> id(a), id(b)
(29857888 29857888)
>>> a is b
True

显式创建字符串的工作方式相同:

>>> a = ''
>>> b = ''
>>> id(a), id(b)
(29857888 29857888)
>>> a is b
True 

但是,当我创建自己的类时,Python会分配不同的ID。

>>> class MyClass:
...    pass
>>> c = MyClass()
>>> d = MyClass()
>>> id(c), id(d)
(16566256 16566800)
>>> c is d
False

Python如何/为什么这样做?有没有办法为我自己的类实现这种“ id匹配”功能?

0 个答案:

没有答案