[Python-3000] Pre-peps on raise and except changes

Nick Coghlan ncoghlan at gmail.com
Sun Feb 11 01:35:36 CET 2007


Guido van Rossum wrote:
> Why don't you want it to mutate the instance?

The recent repeat of the API discussion about list.sort() & 
list.reversed() (mutate instance & return None) vs sorted() and 
reversed() (return new instance).

I'm trying to see why mutating & returning self would be OK here, when 
it's not OK for a list to do the same thing.

An alternate constructor as a class method ducks the question entirely.

Cheers,
Nick.

> 
> On 2/10/07, Nick Coghlan <ncoghlan at gmail.com> wrote:
>> Collin Winter wrote:
>> > I think so. I've already got language ready for the section on using
>> > BaseException.with_traceback() in the 2->3 raise translations, and
>> > I'll work up additional language for the transition plan sometime this
>> > weekend.
>>
>> If with_traceback() is an instance method, does it mutate the existing
>> exception or create a new one?
>>
>> To avoid any confusion, perhaps it should instead be a class method
>> equivalent to the following:
>>
>>    @classmethod
>>    def with_traceback(*args, **kwds):
>>       cls = args[0]
>>       tb = args[1]
>>       args = args[2:]
>>       exc = cls(*args, **kwds)
>>       exc.__traceback__ = tb
>>       return exc
>>
>> Usage would look like:
>>
>>    raise E.with_traceback(T, V)
>>
>>
>> Cheers,
>> Nick.
>>
>> -- 
>> Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
>> ---------------------------------------------------------------
>>              http://www.boredomandlaziness.org
>>
> 
> 


-- 
Nick Coghlan   |   ncoghlan at gmail.com   |   Brisbane, Australia
---------------------------------------------------------------
             http://www.boredomandlaziness.org


More information about the Python-3000 mailing list