Похоже, поведение наследования для set и 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

Меня удивляет, что вы можете изменить конструктор замороженного набора, тогда как это невозможно для конструктора изменяемого набора.

7
задан martineau 31 January 2011 в 14:35
поделиться