[Tutor] TypeError in class destructor

Andreas Perstinger andreas.perstinger at gmx.net
Sat Dec 10 20:56:02 CET 2011


On 2011-12-10 20:22, Walter Prins wrote:
>> Is the example wrong, or is this something to do with how Windows
>> handles stdout that is causing this not to work as designed?  I am
>> using Python 3.2 on Windows Vista Home Premium.
>
> It seems the example may be wrong -- the __exit__ method, as stated
> by the error, is being given 4 parameters whereas the one defined in
> the code only expects one.  I've looked an this is correct on Python
> 3.2 that I have on Windows as well.   Perhaps the implementation of
> __exit__ has been changed somewhere and had the paramters added and
> the book is just out of date?  In any case, changing the def
> __exit__ line to:
>
> def __exit__(self, type, value, traceback):
>
> ... will fix the problem.

Perhaps a typo in the book, because the online-version 
(http://www.diveintopython3.net/examples/stdout.py) works:

def __exit__(self, *args):
     sys.stdout = self.out_old

Bye, Andreas


More information about the Tutor mailing list