码迷,mamicode.com
首页 > 其他好文 > 详细

类对象支持比较操作

时间:2021-06-04 19:54:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:基本   需要   self   大小   类型   比较   acl   基于   使用   

一、int、string、list这些基本类型的大小比较都是基于如下方法实现:__lt__;__gt__;__le__;__ge__;__eq__;__nq__,同理,类要实现比较功能需要实现这些方法

二、使用装饰器functools.total_ordering可以简化上诉实现的方法

三、实例:

from functools import total_ordering
from abc import ABCMeta


@total_ordering
class Shape(metaclass=ABCMeta):
@classmethod
def area(self):
pass

def __lt__(self, obj):
return self.area() < obj.area()

def __eq__(self, obj):
return self.area() == obj.area()



class Rect(Shape):
def __init__(self, a, b):
self.length = a
self.width = b

def area(self):
return self.length * self.width




r1 = Rect(5, 3)
r2 = Rect(5, 3)
print(r1 != r2)

类对象支持比较操作

标签:基本   需要   self   大小   类型   比较   acl   基于   使用   

原文地址:https://www.cnblogs.com/inflame/p/14850469.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!