Inherting from object. Or not.
Nick Craig-Wood
nick at craig-wood.com
Thu Jan 27 10:30:01 EST 2005
Nick Coghlan <ncoghlan at iinet.net.au> wrote:
> Exactly. My advice is to use new-style classes unless you have a
> reason not to (if you're inheriting from a builtin type, then there
> is no need to inherit from object as well - the builtin types
> already have the correct basic type).
Except for Exception!
Exception and anything that inherits from it is an old style class.
I discovered the other day that you can't throw a new style class as
an exception at all, eg
>>> class MyException(object): pass
...
>>> raise MyException
Traceback (most recent call last):
File "<stdin>", line 1, in ?
TypeError: exceptions must be classes, instances, or strings (deprecated), not type
>>>
(not a terribly helpful message - took me a while to work it out!)
wheras old style works fine...
>>> class MyOldException: pass
...
>>> raise MyOldException
Traceback (most recent call last):
File "<stdin>", line 1, in ?
__main__.MyOldException: <__main__.MyOldException instance at 0xb7df4cac>
>>>
After that I recalled a thread on python-dev about it
http://mail.python.org/pipermail/python-dev/2004-August/046812.html
--
Nick Craig-Wood <nick at craig-wood.com> -- http://www.craig-wood.com/nick
More information about the Python-list
mailing list