==值相等 is同一性

Python中对象包含的三个基本要素,分别是:id(身份标识)、python type()(数据类型)和value(值)。

==是python标准操作符中的比较操作符,用来比较判断两个对象的value(值)是否相等,例如下面两个字符串间的比较:
>>> a = 'iplaypython.com'
>>> b = 'iplaypython.com'
>>> a == b
True

 

is也被叫做同一性运算符,这个运算符比较判断的是对象间的唯一身份标识,也就是id是否相同。通过对下面几个列表间的比较,你就会明白is同一性运算符的工作原理:
>>> x = y = [4,5,6]
>>> z = [4,5,6]
>>> x == y
True
>>> x == z
True
>>> x is y
True
>>> x is z
False

 

一个类的不同对象,值不同,要特别注意需要理解一下

class Person(object):
    def __init__(self, name):
        self.name = name

p1 = Person('')
p2 = Person('')

print('p1 == p2: %s' % (p1 == p2))   #  False   
print('p1 is p2: %s' % (p1 == p2))   #  False
print(p1)    #    <__main__.Person object at 0x02D08350>
 
  
print(p2)    #    <__main__.Person object at 0x02D082F0>
 

看来了两个实例值应该相等,但是我们可以自定义  __eq__ 判断传递的值相等

# 定义__eq__方法,重新实现==比较方法
class NewPerson(object):
    def __init__(self, name):
        self.name = name

    def __eq__(self, person_obj):
        """执行==时调用的方法"""
        return self.name == person_obj.name
np1 = NewPerson("王胖胖")
np2 = NewPerson("王胖胖")

print("np1 == np2: %s" % (np1 == np2))  # True
print("np1 is np2: %s" % (np1 is np2))  # False

 

转载于:https://www.cnblogs.com/maxiaohei/p/7798339.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值