python 私有方法 python 私有比較方法

2021-10-12 19:00:02 字數 1654 閱讀 8699

最近在刷牛客網的題,遇到了這樣的一道題:

這道題實際上就是一道最長上公升子串行的題。但是與之不同的地方在於比較的並不是int型的數字,而是tuple型別的座標值。

我們往往會遇到類似的場景:需要比較的值並不是標準的int型別的數字,而是比較複雜的其他結構。我們往往可能為了比較,而寫類似 if x < a and y 那麼有什麼比較很好的解決方法呢?

當然有!那就是私有方法。掌握了這乙個小技巧,能夠讓你刷題如魚得水~!

class d:

def __init__(self, x, y):

# 假設兩個座標,(x, y)

self.x = x

self.y = y

# 是否相等

def __eq__(self, other):

if self.x == other.x and self.y == other.y:

return true

else:

return false

# less than 小於

# 注意!這裡這種邏輯,(0,2) 不小於 (1,2)。

# 因為不滿足 self.y < other.y 。

def __lt__(self, other):

if self.x < other.x and self.y < other.y:

return true

else:

return false

# less equal 小於等於

def __le__(self, other):

if self.x <= other.x and self.y <= other.y:

return true

else:

return false

# great than 大於

def __gt__(self, other):

if self.x > other.x and self.y > other.y:

return true

else:

return false

# great equal 大於等於

def __ge__(self, other):

if self.x >= other.x and self.y >= other.y:

return true

else:

return false

# 修飾一下輸出,否則會列印 <__main__.d object at>

# 比較難看

def __repr__(self):

return f"(,)"

a = d(1,2)

b = d(0,2)

c = d(3,4)

d = d(2,4)

print(a > b) # false

print(a >= b) # true

print(a < b) # false

print(a <= b) # false

print(a == b) # false

唯一需要注意的是:私有方法裡面的比較邏輯一定要寫對!

Python 私有方法,專有方法

python的私有方法 以 雙劃線開頭,但不以雙劃線結尾,privatemethod 專有方法 以雙劃線開頭和結尾,init e.gclass person def init self,name self.name person def getname self return self.name a...

python 私有屬性和私有方法

關於私有屬性和私有方法,1.兩個下劃線開頭的屬性是私有的 private 其他為公共的 public 2.類內部可以訪問私有屬性 方法 3.類外部不能直接訪問私有屬性 方法 4.類外部可以通過 類名 私有屬性 方法 名 訪問私有屬性 方法 私有屬性和私有方法在類中可以呼叫 在外部訪問時用 類名 物件...

Python私有屬性和私有方法

應用場景 在實際開發中,物件 的 某些屬性或方法 可能只希望 在物件的內部被使用,而 不希望在外部被訪問到 私有屬性 就是 物件 不希望公開的 屬性 私有方法 就是 物件 不希望公開的 方法 定義方式 在 定義屬性或方法時,在 屬性名或者方法名前 增加 兩個下劃線,定義的就是 私有 屬性或方法 不要...