class params:
a = 1
b = 2
c = 3
d = 4
我知道不可能将类的所有四个元素传递给一个函数,它只需要执行四个参数
功能(类)
这是唯一的方法
功能(A,B,C,d)
还是有其他解决方案吗?
答案 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
可能会更灵活,但仍然不是我强烈推荐的解决方案......)