Hello, On Fri, Oct 10, 2008 at 2:15 AM, Greg Ewing <[EMAIL PROTECTED]> wrote: > Nick Coghlan wrote: > >> If the time is being spent in PyErr_Format, how far could you get adding >> a dedicated function for creating AttributeErrors? Something along the >> lines of: >> >> PyErr_AttributeError(PyObject *object, PyObject *attr_name) > > More generally, it might be useful to have some mechanism for > deferred instantiation of exceptions, so you can do something > like indicate what type of exception you want to raise, and > specify a function and some arguments to call to instantiate > the exception, but the instantiation itself doesn't happen > unless the exception object is actually needed by Python > code.
But this is already the case, and the reason why there are three variable to describe an exception: type, value and traceback. At the C level, the value is often a string (when using PyErr_Format, for example), or a tuple. Normalization (=creation of the exception object) only occurs when needed, e.g when entering an "except:" handler in python code, or when the exception is printed. However, the "value" string object must be created anyway, and this could be avoided in most Getattr cases. -- Amaury Forgeot d'Arc _______________________________________________ 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