类映射到属性。
kwargs_obj的Python项目详细描述
夸尔格斯目标
将.__init__(self, **kwargs)映射到属性的类。
文件
此模块可用于将**kwargs中的值自动设置为属性,也可用于取消设置的属性。
示例
将**kwargs映射到属性
在这里您可以看到,如何将**kwargs映射到您的属性:
classXex(KwargsObj):def__init__(self,**kwargs):self.something=Noneself.something_else=Noneself._kwargs_to_attributes(kwargs)
这将允许传递设置something_else和something_different:
>>>x=Xex(something=True)>>>x.somethingTrue
取消设置未设置的属性:
>>>x=Xex(asd=True)Traceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"<stdin>",line5,in__init__File"kwargs_obj/kwargs_obj.py",line61,in_kwargs_to_attributes"Can't set %s parameter - it is not defined here!"%keyValueError:Can't set asd parameter - it is not defined here!
禁用未设置属性的设置
还修改了.setattr`方法,该方法禁用设置新属性。这对于数据容器来说可能是个好主意。
可以通过设置._all_set属性来触发修改后的.setattr功能:
classXex(KwargsObj):def__init__(self):self.something=Noneself.something_else=Noneself._all_set=True
现在不可能设置新的属性,这可能有助于防止输入错误:
>>>x=Xex()>>>x.asd=TrueTraceback(mostrecentcalllast):File"<stdin>",line1,in<module>File"kwargs_obj/kwargs_obj.py",line50,in__setattr__raiseValueError("%s is not defined in this class!"%name)ValueError:asdisnotdefinedinthisclass!
但您仍然可以重新定义已定义的属性:
>>>x.something=True>>>
更改日志
1.0.0
- Added tests.
- Added documentation.
- Package uploaded to pypi.
0.1.0
- Project created.