[issue10922] Unexpected exception when calling function_proxy.__class__.__call__(function_proxy)

Daniel Neuhäuser report at bugs.python.org
Mon Jan 17 03:10:18 CET 2011


New submission from Daniel Neuhäuser <dasdasich at googlemail.com>:

Upon trying to create a proxy I stumbled upon this exception:

Traceback (most recent call last):
  File "foo.py", line 11, in <module>
    p.__class__.__call__(p)
SystemError: PyEval_EvalCodeEx: NULL globals

Investigating further led me to this code which reproduces the exception:

class Proxy(object):
    def __init__(self, proxied):
        self.proxied = proxied
    @property
    def __class__(self):
        return self.proxied.__class__
    def __call__(self):
        return self.proxied.__call__()

p = Proxy(lambda: 1)
p.__class__.__call__(p)

I understand that `p.__class__.__call__()` expects an argument of a different type however this is not obvious from the exception itself. PyPy on the other hand raises this exception:

Traceback (most recent call last):
  File "app_main.py", line 53, in run_toplevel
  File "foo.py", line 11, in <module>
    p.__class__.__call__(p)
TypeError: 'function' object expected, got 'Proxy' instead

Which explains the issue and is expected (at least by me) and apparently Jython raises an exception at least similar to PyPy's.

----------
components: Interpreter Core
messages: 126389
nosy: DasIch
priority: normal
severity: normal
status: open
title: Unexpected exception when calling function_proxy.__class__.__call__(function_proxy)
type: behavior
versions: Python 2.5, Python 2.6, Python 2.7, Python 3.1

_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue10922>
_______________________________________


More information about the Python-bugs-list mailing list