我已经搜索了大量关于如何在python中使用getattr函数的链接,并了解它可以用于调用函数,如下所示;
for attr in ['title', 'author']:
getattr(b, attr)
相当于;
b.title
b.author
我的问题是你如何动态引用一个对象; b
即。我知道我将调用函数some_function()
,但对象可以是a
,b
或c
。注意a,b和c都是同一类的一部分;只是不同的实例。
我不知道在运行时我需要打电话。
答案 0 :(得分:0)
我认为' some_function'也将在运行时确定并将名称放入变量:
fname = 'some_function'
for obj in objlist:
method = getattr(obj, fname, None)
if method is None:
continue
method() # you can also put this into a try block
obj上的 getattr
为您提供了一个绑定方法,这意味着它可以直接引用和调用。
答案 1 :(得分:0)
设置some_function
obj
参数并在getattr
中使用:
def some_function(obg):
for attr in ['title', 'author']:
getattr(obj, attr)