Python - 仅限一种类型的集合

时间:2013-08-07 08:50:06

标签: python types set

我想在Python中创建一个Set类,但与已经在Python中实现的set类不同,我希望我的set只包含一种类型的元素。例如,一组整数,一组字符串和一组任何其他用户定义的类。

Python中有没有办法将类型作为参数传递给类?或其他任何方式吗?

我正在考虑使用dict来实现集合,但是dicts可以包含来自不同类型的元素。

1 个答案:

答案 0 :(得分:1)

那样的东西?

from sets import Set

class MySet(Set):

    def __init__(self, iter, klass=None):
        if klass is not None:
            for item in iter:
                if not isinstance(item, klass):
                    raise Exception("Error")
        super(MySet, self).__init__(iter) 


if __name__ == '__main__':

    set1 = MySet([1,2,3], int)
    set2 = MySet([2,3,4], int)

    print set2.intersection(set1)

如果你想在intersection等方法中控制类型,你应该覆盖生成新集合的调用(self.__class__(common)

再见