转换插入集合中的每个元素

时间:2018-03-20 23:36:35

标签: python-3.x collections casting set

我想创建一个set的子类,其行为类似于set,除了添加的每个元素都应该被转换为给定类型(如果不可能则引发Exception)。

在这个例子中,我展示了每个元素都被转换为str的集合。内部元素只能是str。我们添加的元素是str的caste。我们用于更新/交集/差异/联合....的迭代也被转换为str。

StrCastedSet = CastedSet(str)
mySet = StrCastedSet([1, 2, True, "test"])
print(list(mySet))
>>> ["1", "2", "True", "test"]
print(list(mySet.intersection([2, 3, "test"])))
>>> ["2", "test"]
print(2 in mySet)
>>> True
print((not False) in mySet)
>>> True
print(3 in mySet)
>>> False

当然,我可以专门覆盖每种方法。但我想知道是否可以编写一些聪明的装饰器来做到这一点。或者即使已经实施了这样的集合。

0 个答案:

没有答案