这是一类我有:
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 2.6中