python- ==比较的原则eq函数
当类中没有__eq__函数时,根据地址比较
class Vector: def __init__(self, x, y): self.x = x self.y = y pos1=Vector(1,1) pos2=Vector(1,1) print(pos2==pos1)
自定义Vector类中没有__eq__函数,一般按地址比较,pos1和pos2是两个对象,两个对象的地址不同,所以返回False
当类中有__eq__函数时,根据内容比较
list1=[10] list2=[10] print(list2==list1)
list列表继承object类
object类有__eq__函数,所以按内容比较
in函数
没有eq函数时
class Vector: def __init__(self, x, y): self.x = x self.y = y list01=[ Vector(3,3), Vector(1,1), Vector(2,2), Vector(5,5), Vector(3,3), Vector(1,1), ] print(Vector(1,1) in list01) #Vector类没有__eq__函数,根据地址比较,Vector(1,1)产生的对象地址不在list01列表中,返回False print(list01.count(Vector(3,3))) #Vector类没有__eq__函数,根据地址比较,Vector(3,3)产生的对象地址不在list01列表中,返回0
有eq函数时
class Vector: def __init__(self, x, y): self.x = x self.y = y def __eq__(self, other): # 重写eq函数 return self.__dict__ == other.__dict__ # 返回内容,而不是返回地址 list01=[ Vector(3,3), Vector(1,1), Vector(2,2), Vector(5,5), Vector(3,3), Vector(1,1), ] print(Vector(1,1) in list01) #Vector类有__eq__函数,根据内容比较,Vector(1,1)的内容在list01列表中,返回True print(list01.count(Vector(3,3))) #Vector类有__eq__函数,根据内容比较,Vector(3,3)的内容在list01列表中,返回2
重写逻辑运算符视频
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
2020-09-16 qt5-资源与图像