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