【发布时间】:2021-08-21 17:16:21
【问题描述】:
我刚刚开始在 python 类中使用 kwargs,我相信这是一个微不足道的问题,但我在网上找不到足够的答案。
我有一个类,它的配置值在许多函数中使用,但是有 一些调用,其中的值必须被否决
这是我在冗长上下文中的问题的简化版本:
我的要求是:
- 如果没有另外声明,verbose 将成为配置值
test().func() -> "Verbose = True"
- verbose 成为在初始化时传递给类的 kwarg。
test(verbose=False).func() -> "Verbose = False"
- verbose 成为在 func 调用时传递给函数的 kwarg。
test().func(verbose=False) -> "Verbose = False"
- (可选但不是必需的,甚至会牺牲额外的复杂性): 即使没有初始化,verbose 也会变成配置
test.func() -> "Verbose = True"
我的解决方案:
class test():
CONFIG = {"verbose":True}
def __init__(self,**kwargs):
self.__dict__.update(self.CONFIG)
self.__dict__.update(**kwargs)
def func(self=None,**kwargs):
verbose = kwargs['verbose'] if 'verbose' in kwargs else self.verbose
print(f"Verbose = {verbose}")
我的问题: 这似乎不是解决问题的正确方法。这似乎是一种复杂的处理方式,感觉就像我缺少一个内置或标准的解决方案。一个更大的问题是我不喜欢这样,我必须为每个变量和每个我想这样处理的函数做这样的一行。
谢谢
【问题讨论】:
标签: python python-class