python-3.x - 对象的比较方法
问题描述
我想写两个类之间的比较方法,不知道怎么写。我写了这个,我抓住了数字,但我无法比较它们。
pi.avg_sen1()
cm1=pi.avg_ghad1()
heavy1=pi.avg_vazn1()
pu.avg_sen2()
cm2=pu.avg_ghad2()
heavy2=pu.avg_vazn2()
if cm1 > cm2:
print('A')
elif cm1 < cm2:
print('B')
elif cm1 == cm2:
if heavy1 < heavy2:
print("A")
elif heavy1 > heavy2:
print("B")
elif heavy1 == heavy2:
print("same")
解决方案
第一种方法
如果你想创建一个类,并为这个类设置一个比较方法,那么你需要这样做:
class A:
def __init__(self, number):
self.number = number
def __eq__(self, other):
if not isinstance(other, A):
raise NotImplementedError
else:
return self.number == other.number
def __gt__(self, other):
if not isinstance(other, A):
raise NotImplementedError
else:
return self.number > other.number
def __lt__(self, other):
if not isinstance(other, A):
raise NotImplementedError
else:
return self.number < other.number
您需要使用__lt__
, __gt__
, __le__
, __ge__
, __eq__
,等方法__ne__
。请参阅:PEP 207 - 丰富的比较。
显式
您还可以为已导入的类动态添加比较方法。看这个:
from foo import Bar
def eq_bars(self, other):
if not isinstance(other, Bar):
raise NotImplementedError
else:
return self.some_val = other.some_val
Bar.__eq__ = eq_bars
推荐阅读
- authentication - Django rest with djoser 返回详细信息:首次登录时令牌无效
- qtp - 关于如何使用 UFT 从下拉列表中动态选择项目的想法
- c# - 当物体接近目标时,如何添加减速效果?
- reactjs - 对 MaterialTable 的常规反应表
- python - 如何将 google drive api 文件下载流程构建/组织为 celery 任务?
- excel - 无法从嵌入 HTA 的 JScript 打开 Excel
- amazon-web-services - AWS EC2 实例连接在浏览器中被拒绝
- html - 要在网站上下载和使用的开源社交媒体图标?
- python - 将一种格式的日期转换为另一种格式
- php - 将搜索词添加到当前查询(Wordpress PHP)