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

我知道不可能将类的所有四个元素都传递给一个函数,该函数总共需要四个参数

功能(类)

这是唯一的方法吗

函数(a,b,c,d)

还是有其他解决方案?

4

2 回答 2

1

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

于 2013-07-11T12:00:03.107 回答
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更改,您还需要修改类。

(也许使用 atuple()而不是dict()forr可能更灵活一些,但仍然不是我强烈推荐的解决方案......)

于 2013-07-11T11:50:36.553 回答