[Python-Dev] a quit that actually quits
Ronald Oussoren
ronaldoussoren at mac.com
Tue Dec 27 15:27:52 CET 2005
On 27-dec-2005, at 14:55, Christopher Armstrong wrote:
> On 12/28/05, Reinhold Birkenfeld <reinhold-birkenfeld-
> nospam at wolke7.net> 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
More information about the Python-Dev
mailing list