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