簡體   English   中英

Python Can類可以接受參數嗎?

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

我有以下問題:

  1. 如果我使用MetricArg,是否有一種使用列表創建對象的優雅方法?
  2. 當我創建一個類(如果可以的話)時,我需要更喜歡* args嗎?
  1. *args*語法具有等效的鏡像調用:

     p = MetricArg(*somelist) 

    somelist的元素將用作MetricArg參數。

  2. 這取決於您想要呈現的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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM