我正在尝试有效地添加可选功能,以便一些类功能。对python来说很新,所以我正在努力学习好习惯。我通过**kwargs
实现这一点(无论好坏)。
一个这样的例子是添加一个'verbose'选项,它在整个函数中添加了几个条件打印语句,并且在这里作为单元测试就足够了。有很多关于**kwargs
用于变量的SO Q + As(和其他教程),但关于用作执行标志的用法较少。
我的参考框架是在重载和切换语句方面进行思考,所以如果存在各种try
,我就会使用**kwargs
语句。
无法复制和粘贴,所以这里有一些基本的例子:
class Fruit:
def __init__(self, name):
self.name = name
class Bowl:
def __init__(self):
self.contents = []
def fill_bowl(self, *fruit, **options):
self.fruit_list = []
for x in options:
if options.get(x) == 'verbose':
verbose = 1
else:
verbose = 0
从这里,我将添加几个if verbose == 1: print...
Fruit
的各种属性我添加到碗,内容的数量等,以帮助进行健全性检查,而无需深入调试。
这是有用的,除非在键入此内容时出现一些转录错误。我是在正确的轨道上,还是有更直观的方式来实现这一目标?
你不应该在这里使用kwargs。这适用于您需要接受未知选项的情况。在这里,我知道你想接受什么:一个冗长的参数。要使其可选,您可以为其指定默认值。
def fill_bowl(self, *fruit, verbose=0):
虽然你应该使用True和False而不是1和0。
(并注意即使你确实想要使用kwargs,树也没有理由像这样迭代dict;你只会做if kwargs.get("verbose")
。)