Python中的'is'关键字是如何实现的?

69

...is关键字可用于字符串的相等性比较。

>>> s = 'str'
>>> s is 'str'
True
>>> s is 'st'
False

我尝试了__is__()__eq__(),但它们都没有起作用。

>>> class MyString:
...   def __init__(self):
...     self.s = 'string'
...   def __is__(self, s):
...     return self.s == s
...
>>>
>>>
>>> m = MyString()
>>> m is 'ss'
False
>>> m is 'string' # <--- Expected to work
False
>>>
>>> class MyString:
...   def __init__(self):
...     self.s = 'string'
...   def __eq__(self, s):
...     return self.s == s
...
>>>
>>> m = MyString()
>>> m is 'ss'
False
>>> m is 'string' # <--- Expected to work, but again failed
False
>>>
11个回答

0
由于字符串驻留,这可能看起来很奇怪:
a = 'hello'
'hello' is a  #True

b= 'hel-lo'
'hel-lo' is b #False

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接