我想创建一个内置类型set
的替换类,它可以像set一样构造。不能使用继承,因为删除了一些函数以触发method not found
异常。此类还用于查找可能存在内置python集合类型的隐式类型转换的位置。
class SetFacade:
def __init__(self, iterable):
self.lst = list(iterable)
# other allowed member functions...
这个构造函数定义的问题是,我不能在没有参数的情况下调用构造函数SetFacade()
。
如何创建一个与内置集完全相同的构造函数?
因此必须允许
SetFacade([a,c,b])
SetFacade([])
SetFacade()
答案 0 :(得分:4)
完全定义 ...
创建类似集合的类的最佳方法是从collections.Set
派生。您需要实施__len__
,__iter__
和__contains__
。
为了能够添加元素,请从collections.MutableSet
派生,并实施add
和discard
。
答案 1 :(得分:2)
继承自set
:
>>> class SetFacade(set):
... pass
...
>>> SetFacade([1,2,3,4])
SetFacade([1, 2, 3, 4])
>>> SetFacade([1,2,3,3])
SetFacade([1, 2, 3]
答案 2 :(得分:1)
如果你想要一个空的构造函数......
class SetFacade:
def __init__(self, iterable=None):
if iterable is None:
iterable = []
self.lst = list(iterable)