问题描述
我正在尝试使用 kwargs 重构我的代码。假设我有一个回调函数,它可以处理 50 个变量,有时我想调用该函数并只传递 10 个 kwargs 参数。当参数中缺少那个 kwargs 的 KEY 时,是否可以有一个像 None 这样的默认值?
这是我想要实现的目标的简短示例
class Obj:
def __init__(self,first_name,last_name,middle_name):
self.first_name = first_name
self.last_name = last_name
self.middle_name = middle_name
def main(self):
print(f"BEFORE: {self.last_name},{self.first_name} {self.middle_name}")
self.callback(
new_first_name = "Mark Anthony",new_last_name = "Vale"
# new_middle_name key => not using here
)
def callback(self,**kwargs):
self.first_name = kwargs['new_first_name']
self.last_name = kwargs['new_last_name']
# Set a default value if new_middle_name key is missing in parameters when self.callback is being called
self.middle_name = "Not Foo" if kwargs['new_middle_name'] else kwargs['new_middle_name']
print(f"AFTER: {self.last_name},{self.first_name} {self.middle_name}")
obj = Obj(first_name="John",last_name="Doe",middle_name="Foo")
print(obj.main())
这会抛出 KeyError: 'new_middle_name'
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)