[Cython] Optimising dict manipulation in extension types
tav
tav at espians.com
Sun Nov 9 11:40:46 CET 2008
> Whenever it's necessary. For a comparison, for example; on assignments, or
> when passing parameters to a function. You can see it in the generated C code,
> which is actually designed to be readable by humans.
I've been using the -a flag and squinting at the generated C code --
it really helps with understanding what's going on!
> python -m timeit -s 'import pyximport; pyximport.install(); \
> from mycythonmodule import myfunction' 'myfunction(somearg)'
Thx!
> Who needs setters when you can modify "this" directly?
>
> >>> def test():
> ... a = []
> ... def get(i):
> ... return a[i]
> ... return get
> >>> get = test()
> >>> get.func_closure[0].cell_contents.append(123)
> >>> get(0)
> 123
Hehe =)
This bit of code protects against that: http://paste.lisp.org/display/70003
> Use a "cdef class" in Cython instead. It's implemented in C, so you need to
> modify the class instance memory at the C level in order to change the object
> in other ways than you allow. That's not secure, untrusted code may do that,
> but it's not trivial and therefore pretty unlikely at least.
Untrusted code is pure Python only =)
On a separate note, I am having trouble with dynamically returning a
method (function) via __getattribute__. I'd like to be able to
dynamically return attributes like __str__/__len__ -- and for them to
be used by the likes of str(), len(), etc.
Is there some way of doing this? At the moment, the __str__ returned
by my __getattribute__ is just ignored by str().
And in the only google result exploring the problem,
http://mail.python.org/pipermail/python-list/2004-April/259971.html --
Greg suggests Pyrex (this was years ago), but does not explain how it
could be used in a dynamic setting...
Thanks!
--
love, tav
plex:espians/tav | tav at espians.com | +44 (0) 7809 569 369
More information about the Cython-dev
mailing list