[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

AltStyle によって変換されたページ (->オリジナル) /