2016-02-08 9 views
0
class f: 
def f1(self, x): 
    return x 
def f2(self, x): 
    return 2.0*x 
def f3(self, x, function=f1): 
    return self.function(x) 

затемAttributeError: экземпляр не имеет 'функции' атрибута

>>>f0=f() 
>>>f0.f3(1) 

ошибка:

"AttributeError: f instance has no attribute 'function'" 

Как я могу это исправить, если я все еще хочет f3(), чтобы выбрать функцию из f1 или f2 в этом классе?

ответ

0

Вы можете использовать .getattr():

class f: 
    def f1(self, x): 
     return x 

    def f2(self, x): 
     return 2.0 * x 

    def f3(self, x, function="f1"): 
     return getattr(self, function)(x) 

Использование:

f0 = f() 
print(f0.f3(1)) # prints 1 
print(f0.f3(1, "f2")) # prints 2.0