首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >collections.Set的联合

collections.Set的联合
EN

Stack Overflow用户
提问于 2012-03-06 07:42:49
回答 2查看 190关注 0票数 0

我使用collections.Set定义了我自己的set类

代码语言:javascript
运行
复制
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方法。使用该方法,您可以执行以下操作:

代码语言:javascript
运行
复制
>>> frozenset.union(frozenset('ab'), frozenset('bc'))
frozenset(['a', 'c', 'b'])
>>> frozenset.union(*[frozenset('ab'), frozenset('bc')])
frozenset(['a', 'c', 'b'])

我希望能够做到以下几点:

代码语言:javascript
运行
复制
>>> MySet.union(MySet('ab'), MySet('bc'))
MySet(['a', 'c', 'b'])
>>> MySet.union(*[MySet('ab'), MySet('bc')])
MySet(['a', 'c', 'b'])

我怎么做才是最好的呢?

EN

Stack Overflow用户

发布于 2012-03-06 08:44:27

我不会说这是“最好的方式”,但可以为你的个人使用吗?

代码语言:javascript
运行
复制
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])
>>>
"""
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9575838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档