我想在 Python 中创建一个 Set 类,但与已经在 Python 中实现的 set 类不同,我希望我的 set 只包含一种类型的元素。例如一组整数、一组字符串和一组任何其他用户定义的类。
Python中有什么方法可以将类型作为参数传递给类?或任何其他方式来做到这一点?
我正在考虑使用 dict 来实现集合,但 dicts 可以包含来自不同类型的元素。
之类的?
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
,你应该重写生成新 Set( self.__class__(common)
)的调用。
再见