On 27-dec-2005, at 14:55, Christopher Armstrong wrote:

> On 12/28/05, Reinhold Birkenfeld <reinhold-birkenfeld- 
> [EMAIL PROTECTED]> wrote:
>> Fredrik Lundh wrote:
>>> sourceforge just went off the air, so I'm posting this patch  
>>> here, in order
>>> to distract you all from Christian's deque thread.
>>>
>>> this silly little patch changes the behaviour of the interpreter  
>>> so that "quit"
>>> and "exit" actually exits the interpreter.  it does this by  
>>> installing a custom
>>> excepthook that looks for NameErrors at the top level, in  
>>> interactive mode
>>> only.
>>
>> What is wrong with something like this:
>>
>>>>> class Quitter:
>> ...  def __repr__(self): raise SystemExit
>> ...
>>>>> exit = quit = Quitter()
>>
>> It could optionally check for top level too, of course.
>
>
> Not sure if this is what you mean by "check for top level too", but
> the obvious problem is that calling vars(__builtins__) (or similar)
> will cause your interpreter to exit. :)

Why must quit and exit be so special in the first place? They could  
be plain functions,
or even something like::

        class _QuitOrExit:
                def __init__(self, name):
                        self.name = name

                def __repr__(self):
                        return "Use %(name)s() to exit."%(self.__dict__)

                def __call__(self):
                        raise SystemExit

        quit = _QuitOrExit("quit")
        exit = _QuitOrExit("exit")


Ronald

_______________________________________________
Python-Dev mailing list
Python-Dev@python.org
http://mail.python.org/mailman/listinfo/python-dev
Unsubscribe: 
http://mail.python.org/mailman/options/python-dev/archive%40mail-archive.com

Reply via email to