P
Petri Savolainen
After reading the manuals and googling around a bit, I thought I'd use
the 'compile' built-in to create a code object. Then, using either
new.function() or types.FunctionType(), create a function object out of
the code object. The function object can then be turned into a method
for example using types.MethodType(). Right? Well, on Windows 98, using
python 2.2.2 (or 2.3b2):
Traceback (most recent call last):
File "<pyshell#136>", line 1, in -toplevel-
f('hello')
TypeError: ?() takes no arguments (1 given)
This is, well, not what I would have expected.
After peeking around in the code object, I found out its 'co_const'
instance variable also contains a code object - which, it seems, should
really be fed to the function creation methods:
Which is the behaviour I would have expected in the first place!
I would really like to know what I am doing wrong here, or any
clarification regarding what is going on above... I dare not hope having
found a bug
Thanks,
Petri
the 'compile' built-in to create a code object. Then, using either
new.function() or types.FunctionType(), create a function object out of
the code object. The function object can then be turned into a method
for example using types.MethodType(). Right? Well, on Windows 98, using
python 2.2.2 (or 2.3b2):
Traceback (most recent call last):
File "<pyshell#136>", line 1, in -toplevel-
f('hello')
TypeError: ?() takes no arguments (1 given)
This is, well, not what I would have expected.
After peeking around in the code object, I found out its 'co_const'
instance variable also contains a code object - which, it seems, should
really be fed to the function creation methods:
>>> c.co_consts>>> f=types.FunctionType(c.co_consts[0],globals(),'a')
>>> f('hello') 'hello'
>>>
Which is the behaviour I would have expected in the first place!
I would really like to know what I am doing wrong here, or any
clarification regarding what is going on above... I dare not hope having
found a bug
Thanks,
Petri