python定义一个圆类_(python)创建一个可以比较的自定义类
示例:
對于論壇中的帖子,需要根據帖子的點贊數,瀏覽數和評論數進行排序。三個排序標準的優先級順序為:點贊數>瀏覽數>評論數。
也就是說,先按點贊數排序,如果點贊數相等,其次才按瀏覽數,最后才是評論數。
實現:
class Post:
""""""
def __init__(self,postname='',zan_num=0,view_num=0,reply_num=0):
self.postname = postname
self.zan_num = zan_num
self.view_num - view_num
self.reply_num = reply_num
def __cmp__(self,other):
if self.__eq__(other):
return 0
elif self.__lt__(other):
return -1
elif self.__gt__(other):
return 1
def __eq__(self,other):
if not isinstance(other,Post):
raise TypeError,"can't cmp other type to Post!"
if self.zan_num == other.zan_num and self.view_num == other.view_num and self.reply_num == reply_num:
return True
else:
return False
def __lt__(self,other):
if not isinstance(other,Post):
raise TypeError,"can't cmp other type to Post!"
if self.zan_num < other.zan_num:
return True
elif self.zan_num == other.zan_num and self.view_num < other.view_num:
return True
elif self.zan_num == other.zan_num and self.view_num = other.view_num and self.reply_num < other.reply_num:
return True
else:
return False
def __gt__(self,other):
if not isinstance(other,Post):
raise TypeError,"can't cmp other type to Post!"
if self.zan_num > other.zan_num:
return True
elif self.zan_num == other.zan_num and self.view_num > other.view_num:
return True
elif self.zan_num == other.zan_num and self.view_num = other.view_num and self.reply_num > other.reply_num:
return True
else:
return False
#比較
post1 = Post('abc',42,12,33)
post2 = Post('acc',52,65,34)
post3 = Post('adc',42,13,53)
post4 = Post('aec',33,12,22)
print 'post2>post1':post1>post2
#排序:
post_lst = [post1,post2,post3,post4]
post_lst.sort(key=lambda obj:obj, reverse=True)
總結
以上是生活随笔為你收集整理的python定义一个圆类_(python)创建一个可以比较的自定义类的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 大小与地球类似 NASA新发现100光年
- 下一篇: 二十六位朗读主播!讯飞有声书图赏