Python类可以接受参数吗?

2024-06-17 13:42:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有下面的课

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

带着争论

^{pr2}$

我有以下问题:

  1. 如果我使用MetricArg,有没有一种优雅的方法来创建对象 使用列表?在
  2. 创建类时是否需要prefere*args(如果可以的话)?在

Tags: 方法self列表objectinitdefminmax
2条回答

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

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

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

函数/构造器是经常用动态构造的列表调用,还是主要接收固定数量的参数?在

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

  1. *args*语法具有等效的镜像调用:

    p = MetricArg(*somelist)
    

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

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

    在pythonapi中,print()os.path.join()函数是使用任意长度参数列表的可调用函数的著名示例。

相关问题 更多 >