python - 对于 __init__ 中的非配置数据来说 **kwargs 是一个不错的选择吗?

标签 python constructor keyword-argument

我正在考虑以一种不寻常的方式使用**kwargs:作为数据提供者而不是作为重载替代工具。这样,所有关键字参数都应该是一种类型,例如专门形成的元组,除此之外别无选择。例如:

class SomeClass(object):
    '''All **kwargs should be in ("string", 1, True) form'''
    def __init__(self, some_param, **kwargs):
        self.param = some_param
        for arg in kwargs.itervalues():
            if not isinstance(arg[0], str):
            ...

        self.some_dict = kwargs

这样做可以吗?我觉得……很奇怪,似乎不合规范。

最佳答案

看看 Python 中的 dict 构造函数做了什么:

>>> dict(one=1, two=2, three=3)
{'three': 3, 'two': 2, 'one': 1}

也是关键字参数的“创造性”使用。如果这适用于标准类型,并且在您的应用程序中有意义,那就去做吧。

关于python - 对于 __init__ 中的非配置数据来说 **kwargs 是一个不错的选择吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4714115/

相关文章:

python - 如何忽略 OSError : [Errno 2] in Python, os linux、usbtmc

python - 如何找到 Python 3.8.7 解释器?

pointers - 是否可以在 fortran 的类型构造函数中使用指针?

python - 分发关键字参数的最佳方式?

python - argparse - 如何传递给带有 kwargs 或 argv 的方法

python - 如何在 python 中将可变长度参数与关键字参数结合起来?

python - 通过pip安装newspaper3k包出错

python - 一起使用 Snakemake 和 Dask 有意义吗?

由 shared_ptr 管理的对象的 C++ 隐藏构造函数

Java HttpURLConnection 类程序