簡體   English   中英

設置實例之間的加法、減法、並集

[英]Set addition, subtraction, union between instances

我需要在我的類中定義什么方法才能將以下內容相加:

combined_set = set('a') | MyInstance
# want to get set(['a', MyInstance]) // instance is hashable
TypeError: unsupported operand type(s) for |: 'set' and 'MyInstance'

使用重載運算符的集合的並、交、差和對稱差| , & , -^必須在兩個集合上完成,而不是一個集合和一個元素。 但是您可以編寫{MyInstance}而不是MyInstance來擁有一個包含該單個元素的集合。

>>> the_set = {'a'}
>>> element = 'b'
>>> the_set | {element}
{'a', 'b'}
>>> the_set & {element}
set()
>>> the_set - {element}
{'a'}
>>> the_set ^ {element}
{'a', 'b'}

正如 HeapOverflow 指出的那樣,如果您使用unionintersectiondifferencesymmetric_difference方法而不是重載運算符,則參數只需要是可迭代的,不一定是集合; 但這對你的情況沒有幫助。

您可以通過以下方式之一進行操作:

combined_set = set(('a', MyInstance))

combined_set = set('a') | { MyInstance }

combined_set = set('a')
combined_set.add(MyInstance)

你可以定義一個

__ior__(self, value)

為你的班級。

其中 value 可以是您的班級的集合或另一個實例。

但是當然你的類需要從 set 繼承。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM