Why TypeError: 'str' object is not callable?
jstroud at ucla.edu
Wed Mar 22 23:30:29 CET 2006
Randall Parker wrote:
> Using Python 2.4.2 on Windows 2000 in SPE.
> TypeError: 'str' object is not callable
> on this line:
> TmpErrMsg1 = "State machine %s " (StateMachineName)
> In Winpdb 1.0.6 the StateMachineName is of type str in the Namespace |
> Local window of local variables. It even has the string value I expect
> of 'ExampleAO'. That string variable was originally set in another
> variable by reading a socket packet field. Then it was assigned to
> I'm not using str as a variable. I searched all my source code.
> So why can't I do this?
> Is there a way to test what "str" is? Maybe importing the minidom
> messed up what str is? This code used to work. I am trying to figure
> out what caused it to cease to work.
> Any ideas?
I know several other people have given this answer:
TmpErrMsg1 = "State machine %s " % (StateMachineName)
But it deserves comment. Note that
py> Name = 'bob'
py> (Name) == Name
Implying that the parentheses are not neccesary. But,
py> (Name,) == Name
Which may cause some confusion because
py> "%s" % Name == "%s" % (Name,)
Implying that a tuple is not necessary. Now,
py> Name, Name
So one would expect
py> (Name, Name) == (Name, Name)
But, by the same token, one would not expect
py> Name, Name == (Name, Name)
This comes from operator precedence, where == binds tighther than does
",", and so does '%' bind tighter than ",". For example,
py> "%s" % StateMachineName == "%s" % (StateMachineName,)
py> "%s%s" % StateMachineName, StateMachineName
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: not enough arguments for format string
UCLA-DOE Institute for Genomics and Proteomics
Los Angeles, CA 90095
More information about the Python-list