[Python-Dev] Identifier API (original) (raw)

Barry Warsaw barry at python.org
Tue Oct 11 15:19:43 CEST 2011


On Oct 11, 2011, at 02:36 PM, Hrvoje Niksic wrote:

On 10/08/2011 04:54 PM, "Martin v. Löwis" wrote:

tmp = PyObjectCallMethod(result, "update", "O", other);

would be replaced with PyObject *tmp; Pyidentifier(update); ... tmp = PyObjectCallMethodId(result,&PyIdupdate, "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 *supdate; // pick a naming convention PYIDENTIFIERINIT(update); tmp = PyObjectCallMethodObj(result, supdate, "O", other); (but also PyObjectGetAttr(o, supdate), 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.

-Barry



More information about the Python-Dev mailing list