Python - 对象的参数及其作为函数参数的值
Python - parameter of an object and its value as argument of a function
我想创建一个通用函数,它将具有不同类型参数的不同类型的对象作为参数,如下所示:
def func(obj, param, param_values):
for param_value in param_values:
obj.setParam(param=param_value)
# do some stuff
end
现在我想用不同的对象调用该函数,这些对象采用不同的参数名称,例如:
func(obj1(), width, {1,2,3,4})
func(obj2(), height, {4,5,6})
但是我这样写的时候报错说'param' is not a parameter of obj1 and obj2.
如何编写我的函数以便读取 'param' 的值而不是单词 'param'?
'param_value' 也是如此,因为我预计它可能会导致同样的问题。
使用setattr
为对象添加属性。
例如:
class Foo:
def __init__(self):
self.a = "hi"
foo = Foo()
foo.a # "hi"
def func(obj, param, param_values):
setattr(obj, param, param_values)
func(foo, "b", [1,2,3])
foo.b # [1,2,3]
我认为您正在寻找 setattr
函数。
例如:
def func(obj, param, param_values):
for param_value in param_values:
setattr(obj, param, param_value)
# do some stuff
end
您可以使用 **kwargs
和 setattr
向对象添加可变数量的参数。
class Foo:
def __init__(self):
pass
def func(obj, **kwargs):
for k,v in kwargs.items():
setattr(obj,k,v)
foo = Foo()
func(foo, width={1,2,3,4}, height={4,5,6})
print("width: {}".format(foo.width))
print("height: {}".format(foo.height))
我想创建一个通用函数,它将具有不同类型参数的不同类型的对象作为参数,如下所示:
def func(obj, param, param_values):
for param_value in param_values:
obj.setParam(param=param_value)
# do some stuff
end
现在我想用不同的对象调用该函数,这些对象采用不同的参数名称,例如:
func(obj1(), width, {1,2,3,4})
func(obj2(), height, {4,5,6})
但是我这样写的时候报错说'param' is not a parameter of obj1 and obj2.
如何编写我的函数以便读取 'param' 的值而不是单词 'param'? 'param_value' 也是如此,因为我预计它可能会导致同样的问题。
使用setattr
为对象添加属性。
例如:
class Foo:
def __init__(self):
self.a = "hi"
foo = Foo()
foo.a # "hi"
def func(obj, param, param_values):
setattr(obj, param, param_values)
func(foo, "b", [1,2,3])
foo.b # [1,2,3]
我认为您正在寻找 setattr
函数。
例如:
def func(obj, param, param_values):
for param_value in param_values:
setattr(obj, param, param_value)
# do some stuff
end
您可以使用 **kwargs
和 setattr
向对象添加可变数量的参数。
class Foo:
def __init__(self):
pass
def func(obj, **kwargs):
for k,v in kwargs.items():
setattr(obj,k,v)
foo = Foo()
func(foo, width={1,2,3,4}, height={4,5,6})
print("width: {}".format(foo.width))
print("height: {}".format(foo.height))