如何将对象作为关键字参数提供给关键字参数
how to give object to keyword argument as key
我想做的是这样的
class Foo:
def __init__(self):
self.name = "james"
def foo(**kwargs):
for obj, new_name in kwargs.items():
obj.name = new_name
f = Foo()
foo(f="Tom") # f have to be recognized as an object not a string "f"
据我所知,kwargs 是一本字典。
我测试了给一个对象作为字典中的键。和字典可以有一个对象作为键。
dd = {f: 12}
print(dd)
>>>
{<__main__.Foo object at 0x00D685D0>: 12}
但是当我给函数的参数一个对象作为键时,它变成了字符串 "f".
有没有不破坏原有语法的方法
function(obj=value, obj2=value2, ...)
不是这样的
function((obj, value), (obj2, value2), ...)
proper process to tuple
编辑:在函数中使用此代码
obj = getattr(sys.modules[__name__], f"{obj_name}")
kwargs 是一个字典,将每个关键字映射到我们传递给它的值。这就是为什么当我们遍历 kwargs 时,它们的打印顺序似乎没有任何顺序。
def myFun(**kwargs):
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
# Driver code
myFun(first ='Geeks', mid ='for', last='Geeks')
你可以去寻找 **args
** 符号在参数前使用,用于将关键字参数字典传递给函数,这种语法用于在我们不知道将向函数发送多少关键字参数时成功地 运行 代码。
# function definition
def displayArgument(**arguments):
for arg in arguments.items():
print(arg)
# function call
displayArgument(argument1 ="hello", argument2 = 4,
argument3 ="code")
显然我们不能使用除字符串以外的任何其他类型作为键类型。
在此处查看详细答案:
我想做的是这样的
class Foo:
def __init__(self):
self.name = "james"
def foo(**kwargs):
for obj, new_name in kwargs.items():
obj.name = new_name
f = Foo()
foo(f="Tom") # f have to be recognized as an object not a string "f"
据我所知,kwargs 是一本字典。
我测试了给一个对象作为字典中的键。和字典可以有一个对象作为键。
dd = {f: 12}
print(dd)
>>>
{<__main__.Foo object at 0x00D685D0>: 12}
但是当我给函数的参数一个对象作为键时,它变成了字符串 "f".
有没有不破坏原有语法的方法
function(obj=value, obj2=value2, ...)
不是这样的
function((obj, value), (obj2, value2), ...)
proper process to tuple
编辑:在函数中使用此代码
obj = getattr(sys.modules[__name__], f"{obj_name}")
kwargs 是一个字典,将每个关键字映射到我们传递给它的值。这就是为什么当我们遍历 kwargs 时,它们的打印顺序似乎没有任何顺序。
def myFun(**kwargs):
for key, value in kwargs.items():
print ("%s == %s" %(key, value))
# Driver code
myFun(first ='Geeks', mid ='for', last='Geeks')
你可以去寻找 **args
** 符号在参数前使用,用于将关键字参数字典传递给函数,这种语法用于在我们不知道将向函数发送多少关键字参数时成功地 运行 代码。
# function definition
def displayArgument(**arguments):
for arg in arguments.items():
print(arg)
# function call
displayArgument(argument1 ="hello", argument2 = 4,
argument3 ="code")
显然我们不能使用除字符串以外的任何其他类型作为键类型。
在此处查看详细答案: