什么数据模型方法实现参数关键字解包?

时间:2018-04-05 14:21:22

标签: python argument-unpacking python-datamodel

我有一个类,我希望能够使用*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"

我可以通过定义*foo

来实施__iter__
def __iter__(self):
    return iter([self.x, self.y])

但是我无法弄清楚如何实施**foo。要做到这一点需要采用哪些方法?

1 个答案:

答案 0 :(得分:1)

我们只需要覆盖git rev-list来获取要解压缩的属性的名称,然后keys(最好是作为类方法)来访问它们的值。检查以下内容:

__getitem__