On Tue, 11 Oct 2011 09:19:43 -0400 Barry Warsaw <ba...@python.org> wrote: > On Oct 11, 2011, at 02:36 PM, Hrvoje Niksic wrote: > > >On 10/08/2011 04:54 PM, "Martin v. Löwis" wrote: > >> tmp = PyObject_CallMethod(result, "update", "O", other); > >> > >> would be replaced with > >> > >> PyObject *tmp; > >> Py_identifier(update); > >> ... > >> tmp = PyObject_CallMethodId(result,&PyId_update, "O", other); > > > >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.) > > I like this better too because of the all-caps macro name. Something about > seeing "Py_identifier" look like a function call and having it add the magical > PyId_update local bugs me. It just looks wrong, whereas the all-caps is more > of a cultural clue that something else is going on.
+1 for something more recognizable. I think "const string" is more accurate than "identifier" as well. Regards Antoine. _______________________________________________ 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