class 'Exception', unable to use 'super' to call superclass initializer

2005-09-10 Thread chriss
Hi,

environment: Python 2.4, GNU/Linux, kernel 2.6.12.2

having subclassed 'Exception' I'm trying to call the initialiser
__init__(...) of the superclass Exception with 'super(..).__init__(..)' .
However, trying to do so results in a
'TypeError: super() argument 1 must be type, not classobj'.

Now, if I use 'Exception.__init__(..)' instad of super(..)... ,everything
works just as one would expect.

Why does 'super(..).__init__(..)' fail?


thank you for any suggestions
chriss



Here is some example code to illustrate the point:


class WorkingException(Exception):

def __init__(self, message):
# works as I would expect
Exception.__init__(self, message)


class BrokenException(Exception):

def __init__(self, message):
# fails with a typeError
super(BrokenException, self).__init__(self, message)


# - case 1 -
try:
raise WorkingException("Hello WorkingException")

except WorkingException, e:
print e


# - case 3 -
 
try:
raise BrokenException("Hello BrokenException")


except BrokenException, e:
print e



-- 
http://mail.python.org/mailman/listinfo/python-list


Re: calling command line programs?

2005-09-10 Thread chriss
Grant Edwards wrote:

> On 2005-09-11, Yevgeniy (Eugene) Medynskiy <[EMAIL PROTECTED]> wrote:
> 
>> This is probably a very newbie question, but after searching
>> google and docs @ python.org I can't find an answer, so maybe
>> someone would be able to help?
>>
>> I'd like to call command-line functions from my python script
>> (like you would in perl using backticks)... Is there a way of
>> doing this? And if so, how does the environment get treated (I
>> have some variables in my env that the programs I'd be calling
>> need to see).
> 
> Take a look at os.popen, os.spawn, or the popen2, and
> subprocess modules.
> 
> That last one seems to be gaining popularity.
> 

The suggested modules and functions have been deprecated according to the
python 2.4 docs. The doc suggests to use the functions in the 'subprocess'
module.

chriss
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: class 'Exception', unable to use 'super' to call superclass initializer

2005-09-10 Thread chriss
Peter Hansen wrote:

> chriss wrote:
>> Hi,
>> 
>> environment: Python 2.4, GNU/Linux, kernel 2.6.12.2
>> 
>> having subclassed 'Exception' I'm trying to call the initialiser
>> __init__(...) of the superclass Exception with 'super(..).__init__(..)' .
>> However, trying to do so results in a
>> 'TypeError: super() argument 1 must be type, not classobj'.
>> 
>> Now, if I use 'Exception.__init__(..)' instad of super(..)... ,everything
>> works just as one would expect.
>> 
>> Why does 'super(..).__init__(..)' fail?
> 
> Exceptions do not inherit from 'object'; they are old-style classes.
> 
> super() can be used only with new-style classes (which subclass 'object').
> 
> -Peter

That explains it all right. 
Thank you very much for your answer.

chriss
-- 
http://mail.python.org/mailman/listinfo/python-list


Re: calling command line programs?

2005-09-11 Thread chriss
Grant Edwards wrote:

> On 2005-09-10, chriss <[EMAIL PROTECTED]> wrote:
> 
>>> Take a look at os.popen, os.spawn, or the popen2, and
>>> subprocess modules.
>>> 
>>> That last one seems to be gaining popularity.
>>
>> The suggested modules and functions have been deprecated according to the
>> python 2.4 docs. The doc suggests to use the functions in the
>> 'subprocess' module.
> 
> The subprocess module is depricated?
> 
no, the subrocess module intends to replace modules and functions such as:
os.system
os.spawn*
os.popen*
popen2.*
commands.*

have a look at http://python.org/doc/2.4.1/lib/module-subprocess.html


-- 
http://mail.python.org/mailman/listinfo/python-list