[Python-Dev] Monkeypatching idioms -- elegant or ugly?
nathan binkert
nate at binkert.org
Thu Jan 31 21:33:23 CET 2008
> Have you tried this? I believe it doesn't even work; types defined in
> C++ are supposed to be immutable. Try adding a new method to list or
> dict.
I noticed that and I was trying to figure out if I could create a new
metatype which would add a __dict__ and a method (called add_method or
something like that) that could be used as a decorator for
monkeypatching. I was partly using this as an exercise to learn more
about the Python internals and I'm probably going down a rathole.
> However the C++ side should be able to create instances of the
> Python-defined subclass as long as it runs in a method, since it has
> a reference to the actual class.
This is what I'm currently doing and it does work, but I'm trying to
build my extension type in such a way that it lazily gets initialized
as a python object only if it is passed to the python side of things.
For this object, 75% of the time, it is created and used in C++ only
and I'd like to not pay for the python object creation overhead if I
don't have to.
I am putting PyObject_Head at the front of my class, but only
initializing it if it is passed to python. I had intended to
initialize the python bits with a C++ type, but I guess I could do it
with a cached module lookup of the python derived type. Allocation
is really tricky too, so this all may just not be worth the hassle. :)
Anyway, if these types of issues are inappropriate for this forum,
I'll keep quiet.
More information about the Python-Dev
mailing list