繁体   English   中英

通过kwargs添加功能选项(例如,详细)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM