[英]Adding function options via kwargs (e.g., verbose)
我试图有效地添加可选功能,以便一些类功能。 python很新,所以我正在尝试学习良好的习惯。 我正在通过**kwargs
(无论好坏)。
一个这样的示例是添加一个“ verbose”选项,该选项在整个函数中添加了多个条件打印语句,并且在这里足以作为单元测试使用。 SO Q + A(和其他教程)有很多关于变量的**kwargs
用法,但关于执行标志的用**kwargs
少。
我的参考框架在考虑重载和switch语句,因此,如果存在各种**kwargs
,我就会使用try
语句。
无法复制和粘贴,因此这是一些基本示例:
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")
可以这样做。)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.