Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Python > Curious string behavior

Reply
Thread Tools

Curious string behavior

 
 
mark
Guest
Posts: n/a
 
      01-28-2004
I've encountered an anomaly while using the string module (specifically,
string.split). Here's the snippet:

import string

address2 = ' '
line = 'function, dealer, type, firstname, lastname, vin, blank'
print 'Address2 Type (first check): ', type(address2)
function, dealer, type, firstname, lastname, vin, blank =
string.split(line, ',')
print 'Address2 type (second check): ', type(address2)

I've extracted this from a larger script, but the error happens roughly
the same way. Now, here's what I would expect to see:

Address2 Type (first check): <type 'str'>
Address2 type (second check): <type 'str'>

Here's what I get instead:

Address2 Type (first check): <type 'str'>
Address2 type (second check):
Traceback (most recent call last):
File
"C:\PROGRA~1\Python\lib\site-packages\Pythonwin\pywin\framework\scriptut
ils.py", line 310, in RunScript
exec codeObject in __main__.__dict__
File "C:\Program Files\Python\test1.py", line 7, in ?
print 'Address2 type (second check): ', type(address2)
TypeError: 'str' object is not callable

What the heck is going on here? I figure I'm just missing something.

- Mark Daley
Product Manager
Diversiform, Inc.
1-800-444-3445


 
Reply With Quote
 
 
 
 
Diez B. Roggisch
Guest
Posts: n/a
 
      01-28-2004
> address2 = ' '
> line = 'function, dealer, type, firstname, lastname, vin, blank'
> print 'Address2 Type (first check): ', type(address2)
> function, dealer, type, firstname, lastname, vin, blank =

^^^^^
Here you rebind the name type (which is initially bound to <type 'type'>,
that can be called with an argument to get its type) to the string ' '.
Hence the second

type(address2)

doesn't work.

You can do this on all symbols/names in python, which can cause confusing
errors.

Diez
 
Reply With Quote
 
 
 
 
OKB (not okblacke)
Guest
Posts: n/a
 
      01-28-2004
mark wrote:

> address2 = ' '
> line = 'function, dealer, type, firstname, lastname, vin, blank'
> print 'Address2 Type (first check): ', type(address2)
> function, dealer, type, firstname, lastname, vin, blank =
> # ^ LINE ABOVE CONTAINS ERROR
> string.split(line, ',')
> print 'Address2 type (second check): ', type(address2)

<snip>
> Address2 Type (first check): <type 'str'>
> Address2 type (second check):
> Traceback (most recent call last):
> File
> "C:\PROGRA~1\Python\lib\site-packages\Pythonwin\pywin\framework\scri
> ptut ils.py", line 310, in RunScript
> exec codeObject in __main__.__dict__
> File "C:\Program Files\Python\test1.py", line 7, in ?
> print 'Address2 type (second check): ', type(address2)
> TypeError: 'str' object is not callable


In the marked line, you assign a string to a variable called
"type". This means that you overwrote your reference to the type
function that you are trying to use in type(address2). When you "call"
type(address2) you are now trying to call the string which you have
assigned to the name "type". Use a different name for your variable (a
name that the library doesn't use) and you will be fine.

--
--OKB (not okblacke)
"Do not follow where the path may lead. Go, instead, where there is
no path, and leave a trail."
--author unknown
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Curious UnboundLocalError Behavior Matthew Franz Python 2 03-01-2007 07:49 PM
The curious behavior of integer objects Jim B. Wilson Python 15 01-16-2007 09:29 PM
curious paramstyle qmark behavior BartlebyScrivener Python 7 10-21-2006 03:27 PM
Curious template behavior, g++ and xlC and icpc ckhoge@gmail.com C++ 0 06-15-2005 01:08 AM
Curious OE6 behavior Rusty Lillico Computer Support 5 07-01-2003 08:13 PM



Advertisments