我使用collections.Set定义了我自己的set类
class MySet(collections.Set):
def __init__(self, data=frozenset()):
self._set = frozenset(data)
__len__ = lambda self: self._set.__len__()
__iter__ = lambda self: self._set.__iter__()
__contains__ = lambda self: self._set.__contains__()我希望继承frozenset.union方法。使用该方法,您可以执行以下操作:
>>> frozenset.union(frozenset('ab'), frozenset('bc'))
frozenset(['a', 'c', 'b'])
>>> frozenset.union(*[frozenset('ab'), frozenset('bc')])
frozenset(['a', 'c', 'b'])我希望能够做到以下几点:
>>> MySet.union(MySet('ab'), MySet('bc'))
MySet(['a', 'c', 'b'])
>>> MySet.union(*[MySet('ab'), MySet('bc')])
MySet(['a', 'c', 'b'])我怎么做才是最好的呢?
发布于 2012-03-06 08:01:07
在编写s1 | s2时会调用__or__,它应该表示两个集合的并集。
发布于 2012-03-06 08:44:27
我不会说这是“最好的方式”,但可以为你的个人使用吗?
import collections
class MySet(collections.Set):
def __init__(self, data=frozenset()):
self._set = frozenset(data)
__len__ = lambda self: self._set.__len__()
__iter__ = lambda self: self._set.__iter__()
__contains__ = lambda self: self._set.__contains__()
__union__ = lambda self,j: self._set.union(j)
a = MySet(range(5))
b = MySet(range(3,10))
print a.__union__(b)
print b.__union__(a)
"""
>>>
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
>>>
"""https://stackoverflow.com/questions/9575838
复制相似问题