簡體   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