【发布时间】:2018-09-15 09:58:10
【问题描述】:
我有一个类,我希望能够使用 *args 和 **kwargs 语法将其解压缩到参数列表中。
class MyFoo:
x = 1
y = 2 # unpack x and y
z = 3 # do not unpack z
def bar(x, y):
print(x, y)
def baz(a, b=2, x=100, y=100, z=5):
print(a, b, x+2, y+2, z)
foo = MyFoo()
bar(*foo) # should print "1 2"
baz(1, **foo) # should print "1 2 3 4 5"
我可以通过定义__iter__来实现*foo:
def __iter__(self):
return iter([self.x, self.y])
但是我一直无法弄清楚如何实现**foo。需要实现哪些方法来做到这一点?
【问题讨论】:
-
我觉得你需要
__dict__() -
附注你能修复你的代码示例的格式吗?
标签: python argument-unpacking python-datamodel