在尝试“ 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匹配”功能?