- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在使用 getattr 根据变量调用不同的函数。
我正在做类似的事情:
getattr(foo, bar) ()
这行得通,调用诸如 foo.bar() 之类的函数
我的问题是我有'bar'函数,我想用不同的参数调用它。例如:
def f1() :
pass
def f2(param1) :
pass
def f3(param1,param2) :
pass
所以“bar”可以是 f1、f2 或 f3
我试过这个:假设 params 是一个列表,其中包含 'bar' 函数所需的所有参数
getattr(foo, bar) (for p in params :)
我正在寻找一个“干净”的解决方案,无需查看 params 变量的长度
最佳答案
你可以试试这样的:
getattr(foo, bar)(*params)
如果 params
是列表或元组,则此方法有效。 params
中的元素将按顺序解包:
params=(1, 2)
foo(*params)
相当于:
params=(1, 2)
foo(params[0], params[1])
如果有关键字参数,你也可以这样做。
getattr(foo, bar)(*params, **keyword_params)
其中 keyword_params
是字典。
另外,这个答案真的独立于 getattr
。它适用于任何函数/方法。
关于Python使用getattr调用带可变参数的函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11781265/
Python版本 python -VPython 2.7.9::Anaconda 2.0.1 (x86_64) 如果没有返回或退出,则会出现错误: 第 16 行,正在播放 房间 = getattr(自
使用常规 python,我可以获得 getattr(object, att) 但在 Jinja2 中,我得到: jinja2.exceptions.UndefinedError jinja2.exce
有没有办法获取下面name的变量? def save_info(self): name = 'hello' var1 = 'other item' var2 = 1 .
从python官方文档中,我看到了getattr();的正常表达 getattr(对象,名称[,默认]) 我很明白。例如,我可以这样做: >>> def a(): ... pass ... >
根据我的理解,getattr(object, "method") 等同于 object.method()。如果这是真的,那么使用 getattr 有什么意义? 最佳答案 如果您将属性名称作为字符串,则
因此,在我的代码中使用 getattr 时,我发现了以下内容: myVariable = foo.A.bar 有效...但是像这样: B = "A" myVariable = getattr(foo,
我正在使用一个代码库,其中包含一行我真的无法理解: x, x, z = getattr(ReceiveFile, maxsizes)(input, args) 所以如果最后没有第二个元组,它就是 x,
我一直在深入了解 python 中的 getattr() 函数。从那本书中我知道它与模块一起工作得很好——毫无疑问!我进行了一些测试,但我不知道我将 getattr() 与特定变量一起使用的那段代码有
我有两个类(class)。一个类具有属性 x 但没有 y,另一个类具有属性 y 但没有 x。 我有一个函数接受任一类作为参数。是否有一种单行方法可以将新变量分配给 x 属性(如果存在)或 y 属性(如
我有这个代码; class NumberDescriptor(object): def __get__(self, instance, owner): name = (hasa
我要去 Calling a function of a module from a string with the function's name in Python但是每当我在我的程序中调用我的类时
我有一个简单的用例,我有一个类: class A: def meth1(self, name): ... def meth2(self, name, funcname): #
构造 getattr(obj, 'attr1.attr2', None) 不起作用。替换此结构的最佳做法是什么?将其分成两个 getattr 语句? 最佳答案 您可以使用 operator.attrg
我不知道这是否是 getattr built_in 方法的预期行为。getattr 也会执行默认的(第三个)参数,即使实际参数(第二个)满足条件。示例: def func(): print('
这个问题在这里已经有了答案: Why use setattr() and getattr() built-ins? (5 个答案) 关闭 7 年前。 这段代码有什么区别吗,它使用点符号来访问属性:
我正在尝试使用 Python 的 getattr() 从我无法控制的各种 API 获得的大量对象中提取数据。我的想法是遍历一个异类对象列表,并尝试对它们使用 getattr(),直到我提取出我需要的所
getatter()通过方法名字符串调用方法,这个方法最主要的作用就是实现反射机制,也就是说可以通过字符串获取方法实例,这样就可以把一个类可能要调用的方法放到配置文件里,需要的时候进行动态加载。
编辑:我可能会在这里落入 XY 问题陷阱。这就是我真正想要的 know . 我有以下功能: def foo(): bar = funcToGetBar() return bar.getattr
我正在用 Dojo 1.6 编写一个可以修改属性值的 dojo 函数: function replaceAttributeDojo(obj, attrName, newValue) {
我无法使函数 getattr 工作。这是我的代码: print ConfigConsModel()._meta.get_all_field_names() #['codesectrepmodel',
我是一名优秀的程序员,十分优秀!