Reputation: 171
I am trying to call a function from a string in Python as explained in Calling a function of a module from a string with the function's name in Python.
Unfortunately, this doesn't work, and the Python interpreter throws an error:
TypeError: 'str' object is not callable
def current(self, t):
if self.iMode == None:
return self.i
else:
return getattr(self, 'iMode')(t)
The error refers to the last line. iMode
has been set to sinx(t)
, that has been declared in the class.
Can anyone help me please?
Upvotes: 0
Views: 114
Reputation: 41873
From the error message it is obvious that your attribute was set to 'sinx(t)'
(the string literal).
You should set it the function reference sinx
instead, which is a callable.
However, as zhangyangu already said, in you example using getattr()
is not needed. Maybe you really want to use a parameter (string reference) instead of the literal 'iMode'
?
Upvotes: 2
Reputation: 8620
From the error, your iMode
is a string. The iMode
is not a method. There must be something wrong with your declaration. And in the class you can use self.iMode
, no need to use getattr
.
I think you may look for the function like eval
.
Upvotes: 0