3

我有一个定义了成员的类:

self.myset = set()

当我执行myobject.myset.add('item')时,使用我的类的实例,它工作正常:print(myobject.myset)给我 {'item'} 。

但是,当我执行时myobject.myset.union(yourset), whereyourset不为空,它将不起作用;print(myobject.myset)仍然打印为空集。为什么一种方法 ( add) 有效,而另一种方法 ( )union悄悄地(不抛出异常)失败?甚至myobject.myset = yourset可以工作,但是union特别不会。

我正在使用 Python 3。

4

2 回答 2

7

set.union()不会就地修改旧集,但set.add()会。set.union()而是返回一个新集合。

myobject.myset = myobject.myset.union(yourset)

这应该可以解决问题。有关更多信息,请参阅Python 文档。set.union()

于 2015-07-18T01:15:48.183 回答
1

union不修改集合 - 它返回一个新集合。如果您使用联合和交集的运算符 -a.union(b)a | b做同样的事情,这会更清楚(除了方法形式可以采用三个或更多集合的联合而不创建额外的临时对象)。对于就地联合,您可以使用update方法或等效(对于两组)形式a |= b

于 2015-07-18T01:20:02.743 回答