我在我的一個程式中偶然發現了這種不確定性:
假設我們有一個從具有自定義屬性的 int 派生的類。
class A(int):
def __new__(cls, value, *args, **kwargs):
return super(cls, cls).__new__(cls, value)
def __init__(self, _, a):
self.a = a
此類的物件現在用于集合中。
set1 = {A(2, 5), A(3, 2)}
set2 = {A(3, 7), A(5, 5)}
我現在如何知道以下操作的輸出?
x, = set1 & set2
print(x.a)
x, = set2 & set1
print(x.a)
x, = set1.intersection(set2)
print(x.a)
...
在我看來,在各種測驗中結果是相當隨機的,有人可以解釋這種行為嗎?
先感謝您 :)
uj5u.com熱心網友回復:
你讓我非常感興趣,以至于我查看了源代碼并且它變得非常合乎邏輯。我們遍歷較小的集合并搜索較大集合中的每個元素。當兩個集合的大小相等時,順序很重要(這就是為什么在您的情況下會得到不同的結果),否則所采用的元素將始終屬于較小的集合。
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/536990.html
標籤:Python班级放
