首页 > 解决方案 > 对象的比较方法

问题描述

我想写两个类之间的比较方法,不知道怎么写。我写了这个,我抓住了数字,但我无法比较它们。

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")

标签: python-3.x

解决方案


第一种方法

如果你想创建一个类,并为这个类设置一个比较方法,那么你需要这样做:

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

推荐阅读