我不确定为什么在检查或比较对象属性时存在差异。对象construtor:创建当比较对象属性时,“==”和“is”之间的python区别
class FooBarObject():
def __init__(self, val_1, val_2):
self.val_1 = val_1
self.val_2 = val_2
对象:
obj = FooBarObject(val_1 = "gnd", val_2 = 10).
我已经注意到,我得到不同的结果时:
obj.val_1 is "gnd"
obj.val_1 == "gnd"
>>> False
>>> True
我在做什么错在这里?
'是'测试*对象身份*,'=='测试*相等*。测试之间存在着不同的世界。如果两个引用指向两个不同的对象,则身份测试将失败,但这两个对象仍然可以测试为* equal *。 –
不太确定。如果我只检查或比较属性的值,我得到正确的结果 val_1 = “GND” val_2 = 10 val_1是 “GND” val_2 == “GND” >>>真 >>>真 – avstenit
解释器可以*重用*现有的字符串对象作为优化,但不应该*依赖*行为。 –