使用 **kwargs 将字典键 + 值分配给 class 实例
Using **kwargs to assign dictionary keys + values to a class instance
我正在尝试使用 **kwargs
在 class 的实例中创建字典。我想将我的 Book class 两个必需的变量(title
和 author
)以及一些可选的 key/value 对交给它,并让它创建一个内部字典来保存这些变量键和值。这是我的代码:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
例如,我想给 Book 一个像 year='1961'
这样的参数,并让它设置一个 key/value 对 ('year': '1961'
)。到目前为止,我一直在为此使用 if/else
语句,但这似乎效率低下且丑陋。我可以使用 **kwargs
来完成吗?
是的,你可以使用 kwargs,我想你正在寻找以下代码:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
for key, value in kwargs.items():
self.info[key] = value
没关系,我刚刚弄明白了。
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
for key, value in kwargs.items():
self.info[key] = value
回想起来这应该是显而易见的
kwargs
可以被视为字典,您可以通过几种不同的方式合并两组数据 depending on your python version.
3.9+:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
} | kwargs
3.5+:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
**kwargs}
<3.4:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
self.info.update(kwargs)
我正在尝试使用 **kwargs
在 class 的实例中创建字典。我想将我的 Book class 两个必需的变量(title
和 author
)以及一些可选的 key/value 对交给它,并让它创建一个内部字典来保存这些变量键和值。这是我的代码:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
例如,我想给 Book 一个像 year='1961'
这样的参数,并让它设置一个 key/value 对 ('year': '1961'
)。到目前为止,我一直在为此使用 if/else
语句,但这似乎效率低下且丑陋。我可以使用 **kwargs
来完成吗?
是的,你可以使用 kwargs,我想你正在寻找以下代码:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
for key, value in kwargs.items():
self.info[key] = value
没关系,我刚刚弄明白了。
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
for key, value in kwargs.items():
self.info[key] = value
回想起来这应该是显而易见的
kwargs
可以被视为字典,您可以通过几种不同的方式合并两组数据 depending on your python version.
3.9+:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
} | kwargs
3.5+:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
**kwargs}
<3.4:
class Book:
def __init__(self, title, author, **kwargs):
self.info = {
'title': title,
'author': author,
}
self.info.update(kwargs)