有人可以解釋以下行爲:對於設置和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