哪些数据模型方法实现了参数关键字解包?
Posted
技术标签:
【中文标题】哪些数据模型方法实现了参数关键字解包?【英文标题】:What data model methods implement argument keyword unpacking? 【发布时间】: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__()
附注你能修复你的代码示例的格式吗?
【参考方案1】:
我们只需要重写keys
来获取要解包的属性的名称,然后__getitem__
(最好作为类方法)来访问它们的值。检查以下:
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"
【讨论】:
以上是关于哪些数据模型方法实现了参数关键字解包?的主要内容,如果未能解决你的问题,请参考以下文章
多层感知机MLP常见的超参数有哪些?如果MLP模型对于数据集过拟合了,如何调整这些超参数来进行解决?
在 pandas 数据框中使用最大似然估计器的自动回归 (AR) 模型:correlate() 得到了一个意外的关键字参数“旧行为”