Python 哪些数据模型方法实现参数关键字解包?
我有一个类,我希望能够使用Python 哪些数据模型方法实现参数关键字解包?,python,argument-unpacking,python-datamodel,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
*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"
我可以通过定义\uu iter\uuu
来实现*foo
:
def __iter__(self):
return iter([self.x, self.y])
然而,我还没有弄清楚如何实现
**foo
。要做到这一点,需要实现哪些方法?我们只需要覆盖键
,以获取要解压缩的属性的名称,然后\uuuuuu getitem\uuuuu
(最好作为类方法)来访问它们的值。检查以下内容:
class MyFoo(object):
x = 1
y = 2 # unpack x and y
z = 3 # do not unpack z
def __iter__(self):
return iter([self.x, self.y])
def keys(self):
return ['x', 'y']
@classmethod
def __getitem__(cls, key):
return cls.__dict__[key]
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"
我想您需要
\uuu dict\uuuu()
p.s.您能修复代码示例的格式吗?