[Tutor] Re: Callable? Whats callable?

Bill Bell bill-bell@bill-bell.hamilton.on.ca
Sun, 26 Aug 2001 16:32:16 -0400


"epoch7" <epoch7@charter.net> wrote, in part:
<snip>
> y =3D """%s""" (x)

A 'callable' thing is a section of program code that can be used 
(called) by another program to do some work for the callER.

Let me first duplicate the message you saw. I can tell that your 
name 'x' points to a string that you read from a file. I'll just make 'x' 
point to an arbitrary string, to avoid the carry-on of reading from a 
file.

>>> x = 'Fourty-two'
>>> y = """%s""" (x)
Traceback (most recent call last):
  File "<interactive input>", line 1, in ?
TypeError: object is not callable: '%s'

In this case, when Python sees '(x)' in your line of code it 
concludes that the object preceding it must be 'callable', ie, a 
function, say. It examines that object, which happens to be '%s', 
compares it with the kinds of objects that can be called (or used if 
you will) by other programs, finds that it's a string, however, and 
makes the rude complaint that you see.

So, what to do, eh?

My guess is that you want to convert the object to which 'x' points 
to a string and then make 'y' point to the converted object. If I have 
guessed correctly then you need to write,

>>> y = "%s" % (x)

rather than what you did.

Or, IOW, just insert the '%' operator in your statement. Now when 
Python examines this statement it understands that you want to 
convert the content of 'x' using the specification '%s' and it 
complaineth no more.

Incidentally I haven't examined any of the rest of your script. I 
assume that if you wanted us to comment about that you would 
have asked us. :o)

Good luck!

Bill

Bill Bell, Software Developer