将.__init__(self, **kwargs)映射到属性的类。
项目描述
kwargs_obj
将.__init__(self, **kwargs)映射到属性的类。
文档
此模块可用于自动将**kwargs的值设置为属性,并且还可以禁用未设置属性的设置。
示例
将**kwargs映射到属性
在此处,您可以了解如何将**kwargs映射到您的属性
class Xex(KwargsObj):
def __init__(self, **kwargs):
self.something = None
self.something_else = None
self._kwargs_to_attributes(kwargs)
这将允许传递设置something_else和something_different的参数
>>> x = Xex(something=True)
>>> x.something
True
禁用未设置属性的设置
>>> x = Xex(asd=True)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in __init__
File "kwargs_obj/kwargs_obj.py", line 61, in _kwargs_to_attributes
"Can't set %s parameter - it is not defined here!" % key
ValueError: Can't set asd parameter - it is not defined here!
禁用未设置属性的设置
修改了.__setattr__()方法,该方法禁用设置新属性。这可能对于数据容器来说是个好主意。
可以通过设置._all_set属性来触发修改.__setattr__()的功能
class Xex(KwargsObj):
def __init__(self):
self.something = None
self.something_else = None
self._all_set = True
现在将无法设置新属性,这可能有助于防止拼写错误
>>> x = Xex()
>>> x.asd = True
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "kwargs_obj/kwargs_obj.py", line 50, in __setattr__
raise ValueError("%s is not defined in this class!" % name)
ValueError: asd is not defined in this class!
但您仍然可以重新定义已定义的属性
>>> x.something = True
>>>
变更日志
1.0.0
添加了测试。
添加了文档。
将包上传到PyPI。
0.1.0
创建项目。
项目详情
关闭
kwargs_obj-1.0.0.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | acf094120268beb105eae4b28126697abdf3db39387fd2e85c75de2b615097ba |
|
MD5 | 8cbb310a16d1fd072369c4dd67f49bbd |
|
BLAKE2b-256 | 3973c16fa20b1c36c7eb3ac9eb4e6a48bff25311987482726e95c5220a5f2ad4 |