Connecting Tech Pros Worldwide Help | Site Map

Re: python bug when subclassing list?

 
LinkBack Thread Tools Search this Thread
  #1  
Old November 12th, 2008, 01:25 AM
Steve Holden
Guest
 
Posts: n/a
Default Re: python bug when subclassing list?

Hamish McKenzie wrote:
Quote:
I want to write a Vector class and it makes the most sense to just
subclass list. I also want to be able to instantiate a vector using either:
>
>
>
Vector( 1, 2, 3 )
>
OR
>
Vector( [1, 2, 3] )
>
>
>
>
>
so I have this:
>
>
>
class Vector(list):
>
def __new__( cls, *a ):
>
try:
>
print a
>
return list.__new__(cls, a)
>
except:
>
print 'broken'
>
return list.__new__(cls, list(a))
>
>
>
>
>
doing Vector( 1, 2, 3 ) on this class results in a TypeError – which
doesn’t seem to get caught by the try block (ie “broken” never gets
printed, and it never tries to
>
>
>
I can do pretty much the exact same code but inheriting from tuple
instead of list and it works fine.
>
>
>
is this a python bug? or am I doing something wrong?
>
Vector(1, 2, 3) fails for exactly the same reasons as list:
Quote:
Quote:
Quote:
>>list(1, 2, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: list() takes at most 1 argument (3 given)

So the behavior you want cannot be inherited from list, since list
doesn't implement that behavior!

As toy our assertion that you can subclass tuple that way, I am inclined
to doubt it because of this:
Quote:
Quote:
Quote:
>>tuple(1, 2, 3)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: tuple() takes at most 1 argument (3 given)

regards
Steve
--
Steve Holden +1 571 484 6266 +1 800 494 3119
Holden Web LLC http://www.holdenweb.com/


 

Bookmarks

Thread Tools Search this Thread
Search this Thread:

Advanced Search

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 Off
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are On

Popular Articles

What is Bytes?

We are a network of experts and professionals in IT and software development that help one another with answers to tough questions and share insights. Get the best answers to your questions from over 220,989 network members.