Python 2.7 不管怎样,接受kwarg和随机CaMElCase?
我正在写一些严重依赖**kwargs的类。我想以一种最终用户可以创建这些对象而不必知道关键字的确切情况的方式来编写它Python 2.7 不管怎样,接受kwarg和随机CaMElCase?,python-2.7,Python 2.7,我正在写一些严重依赖**kwargs的类。我想以一种最终用户可以创建这些对象而不必知道关键字的确切情况的方式来编写它 class Foo(object): def __init__(self, **kwargs): # Rewrite this to accept random case if "EnableDebug" in kwargs and kwargs.get("EnableDebug") == True: print "
class Foo(object):
def __init__(self, **kwargs):
# Rewrite this to accept random case
if "EnableDebug" in kwargs and kwargs.get("EnableDebug") == True:
print "EnableDebug mode."
然后这个库的最终用户可以做以下事情:
myobj = Foo(enableDEBUG=True)
我知道我可以通过**kwargs进行暴力攻击,并运行一系列测试和字符串操作,但我很好奇有一个漂亮的把戏或是我不知道的东西
谢谢你的帮助
更新
在使用python 2.76尝试此操作时,我遇到了一个错误:
File "/home/devel/test.py", line 144, in <dictcomp>
kwargs = {k.lower():v for k,v in kwargs}
ValueError: too many values to unpack
文件“/home/devel/test.py”,第144行,在
kwargs={k.lower():v代表k,v代表kwargs}
ValueError:要解压缩的值太多
有很多方法可以做到这一点,但您可以将参数标准化为小写,然后执行任何您想执行的测试:
kwargs = {k.lower():v for k,v in kwargs.items()}
然后保证所有字符串都是标准化的 像往常一样,我忘了做
kwargs.items()
而不仅仅是kwargs
。它经过编辑以反映正确的呼叫。