这是我的一堂课:
class metadict(dict):
def __init__(self, do_something=False, *args, **kwargs)
if do_something:
pass
super(metadict,self).__init__(*args,**kwargs)
这个想法是封装字典并使用特殊关键字添加一些功能。do_something
尽管您无法在创建时添加它,但该字典仍然可以保存。对于所有其他方面,它的行为就像普通字典一样。
无论如何,问题是我给args
它的任何东西都是从分配第一个do_something
不是我想要的值开始的。
我现在做的是这样的:
class metadict(dict):
def __init__(self, do_something=False, *args, **kwargs)
if not isinstance(do_something, bool):
args = list(args)
args.append(do_something)
elif do_something:
pass
super(metadict,self).__init__(*args,**kwargs)
但这对我来说不合适。我也可以检查do_something
kwargs 中的值,但情况会更糟,因为我弄乱了删除有用信息的签名......
python 中有什么方法可以安全地使用可选、位置和关键字参数吗?如果没有,还有其他更简单的解决方法吗?
我在 python 2.6