On May 4, 2009, at 3:10 AM, Larry Hastings wrote:
I should have brought this up to python-dev before--sorry for being
so slow. It's already in the tracker for a couple of days:
http://bugs.python.org/issue5880
The idea: PyGetSetDef has this "void *closure" field that acts like
a context pointer. You stick it in the PyGetSetDef, and it gets
passed back to you when your getter or setter is called. It's a
reasonable API design, but in practice you almost never need it.
Meanwhile, it clutters up CPython, particularly typeobject.c; there
are all these function calls that end with ", NULL);", just to
satisfy the getter/setter prototype internally.
I think this is an important feature, which allows you to define
generic, reusable getter and setter functions and pass static metadata
to them at runtime. Admittedly I have never needed the full pointer,
my typical usage is to pass in an offset.
I think this should only be removed if a suitable mechanism replaces
it, if not it will require some needless duplication of code in
extensions that use it (in particular my own) 8^)
-Casey
_______________________________________________
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