2024-09-29 02:29:01 发布
网友
我有以下课程:
class MySet(set): def __init__(self, arg=None): if isinstance(arg, basestring): arg = arg.split() set.__init__(self, arg)
这和预期一样工作(用字符串的单词而不是字母初始化集合)。但是,当我想对set的不可变版本执行相同操作时,__init__方法似乎被忽略了:
__init__
我能用__new__实现类似的功能吗?在
__new__
是的,您需要重写__new__特殊方法:
class MySet(frozenset): def __new__(cls, *args): if args and isinstance (args[0], basestring): args = (args[0].split (),) + args[1:] return super (MySet, cls).__new__(cls, *args) print MySet ('foo bar baz')
输出是:
是的,您需要重写
__new__
特殊方法:输出是:
^{2}$相关问题 更多 >
编程相关推荐