【发布时间】:2011-06-18 12:48:15
【问题描述】:
有人可以解释以下行为吗:
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'])有效。
标签: python inheritance immutability built-in-types