我一直在尋找將or陳述句分配給變數的方法,以使該變數可以用作其他比較的參考。
我試圖通過示例來完成:
a = 1
b = 0
c = a or b
print(a == c) #would return True
print(b == c) #would also return True
uj5u.com熱心網友回復:
您可以==通過創建一個類并將整數值替換為包含每個整數的物件來更改運算子的定義,因此您將能夠使用該__eq__函式覆寫等于運算子。在此示例中,我將否定默認運算子的結果,以向您展示您可以應用該操作所需的任何定義。唯一的缺點是在 Python 中,您不能覆寫或重新定義or:
class num:
def __init__(self, n):
self.n = n
def __eq__(self, n):
return not n==self.n
a = num(1)
b = num(0)
c = a or b
print(a == c)
print(b == c)
uj5u.com熱心網友回復:
你可以通過使用functools.partialand得到類似的東西operator.or_:
a=True
b=False
c = partial(or_, a,b)
c()
True
但請注意,a并b在定義時進行評估:
a=False
c()
True
uj5u.com熱心網友回復:
您似乎想要的有點接近集合的作業方式,操作員|替換or(不能被覆寫):
a = {0}
b = {1}
c = a | b # or a.union(b)
a.issubset(c) # True
b.issubset(c) # True
{3}.issubset(c) # False
您原則上可以創建自己的擴展類set:
class Singleton(set):
def __init__(self, n):
super().__init__([n])
def __eq__(self, other):
return self.issubset(other) or other.issubset(self)
a = Singleton(1)
b = Singleton(0)
c = a | b
print(a == c) # True
print(b == c) # True
但令人懷疑的是,由此產生的令人困惑的代碼是否值得。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/465167.html
標籤:Python python-3.x
上一篇:有沒有辦法簡化我的“if”陳述句的深層字串?他們都沒有真正重復他們都只是相似
下一篇:在熊貓資料框中分組定期資料
