Python總結 類的比較

2021-10-23 06:16:50 字數 1106 閱讀 5070

有時我們希望自定義類的例項間可以使用<, <=, >, >=, ==, !=符號進行比較,我們自定義比較的行為

比如,比較乙個矩形例項和乙個圓形例項

我們希望它們比較的是面積

from functools import total_ordering		# 類物件的比較

import math # 匯入圓周率計算圓面積

import abc # 抽象基類

@total_ordering # 類物件的比較

class

shape

(metaclass=abc.abcmeta)

:# 抽象基類

@abc.abstractmethod

defarea

(self)

:pass

def__lt__

(self, other)

:return self.area(

)< other.area(

)def

__eq__

(self, other)

:return self.area(

)== other.area(

)class

rect

(shape)

:def

__init__

(self, w, h)

: self.w = w

self.h = h

defarea

(self)

:return self.w * self.h

class

cirle

(shape)

:def

__init__

(self, r)

: self.r = r

defarea

(self)

:return self.r **

2*math.pi

c = cirle(3)

rect = rect(1,

2)print

(c == rect)

類物件的比較

equals函式和hashcode函式 public boolean equals object obj public int hashcode 注意覆蓋equals時總要覆蓋hashcode 乙個很常見的錯誤根源在於沒有覆蓋hashcode方法。在每個覆蓋了equals方法的類中,也必須覆蓋has...

Object 類的比較

object 所有類的父類。所有物件都具備的內容不斷地抽取,就到了乙個頂層object類中。public class person public void setages int ages person int ages 既然父類中已經提供了對對像相等的比較,可以直接使用,如果比較內容不是所需要,可...

集合類的比較

集合類的分類 1.list結構集合類 arraylist linkedlist vector stack 2.map結構集合類 hashmap hashtable 3.set結構集合類 hashset treeset 4.queue結構集合類和queue介面 list結構集合類和map結構集合類的區...