Python - 对象的参数及其作为函数参数的值

标签 python arguments parameter-passing keyword

我想创建一个通用函数,它将具有不同类型参数的不同类型的对象作为参数,如下所示:

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' 不是 obj1 和 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]

关于Python - 对象的参数及其作为函数参数的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47734686/

相关文章:

c# - 打包参数的好设计?

python - 从python打开一个java JAR文件

python - 在 Django 中本地化的数字格式?

c++ - 在 C++ 中使用带有共享变量的 pthread 进行多线程

java - java变量参数列表中至少需要一个元素

Javascript/Node.js : How to define a local variable as part of arguments in a function call?

java - Java 是 "pass-by-reference"还是 "pass-by-value"?

python - python中有没有一种方法可以在不显式调用文件的情况下执行文件中的所有函数?

python - 比较列表和 dictview

c++ - 不评估两个参数的 Halide 'select'