最近在刷牛客網的題,遇到了這樣的一道題:
這道題實際上就是一道最長上公升子串行的題。但是與之不同的地方在於比較的並不是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私有屬性和私有方法
應用場景 在實際開發中,物件 的 某些屬性或方法 可能只希望 在物件的內部被使用,而 不希望在外部被訪問到 私有屬性 就是 物件 不希望公開的 屬性 私有方法 就是 物件 不希望公開的 方法 定義方式 在 定義屬性或方法時,在 屬性名或者方法名前 增加 兩個下劃線,定義的就是 私有 屬性或方法 不要...