You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This calling of the wrapper functions and assignment to the instance on every new point instantiation just looks bad. It is not that bad, as the wrapped functions are not new objects, but it remakes the assignment to the unique func in the ctypes wrapper for the library (although it would still have a major impact would one write actual Python code dealing with a couple hundred of Point instances)
I'd suggest just making the wrap call once, on top level code, would be much more elegant here:
class Point(...):
...
def move(self):
Point._move_point_func(self)
# These assignments must be after class body, due to the needed referenc to the class itself.
Point._move_point_func = wrap_function(lib, 'move_point', None, [Point])
...
(I am not sure if the functions wrapped by ctypes have a proper __get__. If they have, you might not even need the intermediate move method)
The text was updated successfully, but these errors were encountered:
Thanks! I'll play around with that when I get a minute or two. I REALLY appreciate that suggestion! I learned a great deal figuring out this demo and I'm glad to get to learn some more from it!
I'll leave this open until I work through your suggestion.
I created a pull request if you've got a few minutes. I think this is what you were getting at. #6
Also, I didn't quite follow your final comment. Is it along the lines of hooking into the getattr function of the Line class, looking up the attributes of the library and then automatically calling an existing function?
I might play with that next.
Thanks again for your ideas! I really appreciate it!
ctypes_example/tutorial2/testWrappedPoint.py
Line 29 in 07e89a1
This calling of the wrapper functions and assignment to the instance on every new point instantiation just looks bad. It is not that bad, as the wrapped functions are not new objects, but it remakes the assignment to the unique
func
in the ctypes wrapper for the library (although it would still have a major impact would one write actual Python code dealing with a couple hundred of Point instances)I'd suggest just making the wrap call once, on top level code, would be much more elegant here:
(I am not sure if the functions wrapped by ctypes have a proper
__get__
. If they have, you might not even need the intermediatemove
method)The text was updated successfully, but these errors were encountered: