[英]Python Can classes take arguments?
我有以下課程
class MetricLst(object):
def __init__(self,n):
self.min = min(n)
self.max = max(n)
lst = [1,2,3,4,5]
p = MetricLst(lst)
print p.max
5
print p.min
1
與爭論
class MetricArg(object):
def __init__(self,*args):
self.min = min(args)
self.max = max(args)
p = MetricArg(1,2,3,4,5)
p.max
print 5
p.min
print 1
我有以下問題:
*args*
語法具有等效的鏡像調用:
p = MetricArg(*somelist)
somelist
的元素將用作MetricArg
參數。
這取決於您想要呈現的API類型。 如果你想接受0個或更多的參數,因為你期望最方便地調用你的類,那么你就使用那個表單。
在Python API中, print()
和os.path.join()
函數是使用任意長度參數列表的可調用對象的眾所周知的示例。
您可以將列表傳遞給可變參數函數或構造函數
L = [1, 2, 3, 4, 5]
p = MetricArg(*L)
無論是否使用可變參數函數而不是接受列表的函數,它實際上取決於函數。
是否經常使用動態構造的列表調用函數/構造函數,還是主要接收固定數量的參數?
如果列表主要是動態的,那么接受列表是最好的主意,因為你不會用*L
混淆代碼。 另一方面,如果在大多數情況下參數的數量在調用者中是固定的,那么只是傳遞參數比構建列表只是為了傳遞它更具可讀性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.