我想知道是否可以使用表达式作为函数的关键字。
class A():
def __init__(self, b):
print(b)
a = A("test1")
a = A(b="test2")
kwrd = str("b")
a = A(kwrd="test3") #This part doesn't work but you get the idea
---------------------
Traceback (most recent call last):
File "test.py", line 85, in <module>
a = A(kwrd="test3")
TypeError: __init__() got an unexpected keyword argument 'kwrd'
我希望函数可以像关键字“ b”一样显示“ kwrd”。
有人知道吗?甚至有可能吗?
谢谢
答案 0 :(得分:3)
创建字典并使用通常的**mapping
命名实参扩展可能是最方便的方法:
kwrd = "b"
a = A(**{kwrd: "test3"})
# A(**{"b": "test3"})
# A(b="test3")
答案 1 :(得分:3)
在Python中,有一个称为“拆包”的功能,您可以为它拆包序列,以便将每个元素用作传递给函数的参数,并拆解字典,以便将每个条目用作关键字参数>
# construct a dict to represent the keyword args you wanna pass
# with key being the keyword and value being the arg
your_args = {"b": "test123"}
a = A(**your_args) # equivalent to calling A(b="test123")