2016-01-20 28 views
2

我已经通过大量的关于如何在python中使用getattr函数的链接进行了搜索,并了解它可以用来调用函数,如下所示;Python - 如何使用getattr调用变量对象?

for attr in ['title', 'author']: 
    getattr(b, attr) 

这相当于;

b.title 
b.author 

我的问题是你如何动态引用一个对象; b

即我知道我会被调用函数some_function(),但对象可能是ab,或c。注a,b和c都是同一个类的一部分;只是不同的例子。

我将不知道,直到运行时,我将需要打电话。

+0

* A,B和C是相同的类的所有部分;只是不同的实例* ...对我来说不清楚... ...像其他类的实例一样? –

+1

你怎么知道你必须使用哪一个'a','b'或'c'? – Daniel

+1

最好的方法是不要使用名为'a','b'和'c'的变量。相反,使用键为“a”,“b”和“c”的字典。铁拳; – BrenBarn

回答

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 

getattr上的obj为您提供了一个绑定方法,这意味着它可以直接引用,并呼吁。

0

设置some_function一个obj参数,并且在使用getattr

def some_function(obg): 
    for attr in ['title', 'author']: 
     getattr(obj, attr)