Python Can类接受参数



我有以下类

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. 当我创建一个类时,我是否需要preferre*args(如果可以的话)
  1. *args*语法具有镜像调用等效项:

    p = MetricArg(*somelist)
    

    somelist的元素将用作MetricArg的参数。

  2. 这取决于您想要呈现哪种类型的API。如果你想接受0个或更多的参数,因为这是你期望类被最方便地调用的方式,那么你可以使用这种形式

    在Python API中,print()os.path.join()函数是使用arbitry-length参数列表的可调用函数的众所周知的示例。

您可以将列表传递给可变函数或构造函数

L = [1, 2, 3, 4, 5]
p = MetricArg(*L)

是否使用变元函数而不是接受列表的函数,实际上取决于函数。

函数/构造函数是否经常使用动态构建的列表进行调用,或者它是否主要接收固定数量的参数?

如果列表大部分是动态的,那么接受一个列表是最好的主意,因为您不会用*L来打乱代码。另一方面,如果在大多数情况下,调用者中的参数数量是固定的并且很小,那么仅仅传递参数比仅仅构建一个列表来传递参数更具可读性

相关内容

  • 没有找到相关文章

最新更新