2011/10/11 Hrvoje Niksic <hrvoje.nik...@avl.com>

> An alternative I am fond of is to to avoid introducing a new type, and
> simply initialize a PyObject * and register its address.  For example:
>
>  PyObject *tmp;
>  static PyObject *s_update;    // pick a naming convention
>
>  PY_IDENTIFIER_INIT(update);
>  tmp = PyObject_CallMethodObj(result, s_update, "O", other);
>
>  (but also PyObject_GetAttr(o, s_update), etc.)
>
> PY_IDENTIFIER_INIT(update) might expand to something like:
>
>  if (!s_update) {
>    s_update = PyUnicode_InternFromString("**update");
>    _Py_IdentifierAdd(&s_update);
>  }
>

It should also check for errors; in this case the initialization is a bit
more verbose:
if (PY_IDENTIFIER_INIT(update) < 0)
   <return NULL or return -1 or goto error>;

-- 
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

Reply via email to