Python类元素作为函数参数

时间:2013-07-11 11:38:09

标签: python

class params:
  a = 1
  b = 2
  c = 3
  d = 4

我知道不可能将类的所有四个元素传递给一个函数,它只需要执行四个参数

  

功能(类)

这是唯一的方法

  

功能(A,B,C,d)

还是有其他解决方案吗?

2 个答案:

答案 0 :(得分:1)

我认为4个论点是可以接受的。但是如果你想要,可以选择定义func(a, *args, **kargs)这样的函数。三个参数中的任何一个都是可选的。我认为没有必要创建这样一个类来做Python已经完成的事情,并且做得更好。有关函数参数的更多信息,请查看here

答案 1 :(得分:0)

你可以这样做:

class params:
    a = 1
    b = 2
    c = 3
    d = 4

    def __call__(self):
        r = dict()
        for attr in dir(self):
            if not attr.startswith('_'):
                r[attr] = getattr(self, attr)
        return r

p = params()
function(**p())

然而,这非常hacky并且可能不太可维护:如果由于某种原因函数调用function更改,则还需要修改类。

(对tuple()使用dict()代替r可能会更灵活,但仍然不是我强烈推荐的解决方案......)