跳转到主要内容

将.__init__(self, **kwargs)映射到属性的类。

项目描述

kwargs_obj

https://badge.fury.io/py/kwargs_obj.png https://pypip.in/d/kwargs_obj/badge.png

将.__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 (4.2 kB 查看哈希值)

上传时间: 源代码

由以下支持