有人可以解释以下行为:对于设置和frozenset继承行为似乎有所不同
class derivedset1(frozenset):
def __new__(cls,*args):
return frozenset.__new__(cls,args)
class derivedset2(set):
def __new__(cls,*args):
return set.__new__(cls,args)
a=derivedset1('item1','item2') # WORKS
b=derivedset2('item1','item2') # DOESN'T WORK
Traceback (most recent call last):
File "inheriting-behaviours.py", line 12, in <module>
b=derivedset2('item1','item2') # DOESN'T WORK
TypeError: derivedset2 expected at most 1 arguments, got 2
这是令人惊讶的,我认为你可以改变冷冻集的构造函数,而这是不可能的构造一个可变的集合。
有趣的数据点:`b = derivedset2(['item1','item2'])`工作。 – 2011-01-31 11:45:42