Clement Rouault <[email protected]> added the comment:
Hello,
As this issue may never be fixed for python3.6. I wanted to post a solution to
bypass the bug. It may be useful for the next person stumbling on this as I
have.
The __class__ closure is only created if a function use the word super(). This
closure allow to call super() without argument.
By using another name than super() the closure is not created and your code can
work. Only downside is that you need to call super in its explicit form
super(Cls, self). But it is better that not working at all (and it is
compatible python2).
Here is a sample:
super_bypass_issue29270 = super
class Something(ctypes.c_ulong):
def __repr__(self):
return "BYPASS: " + super_bypass_issue29270(Something, self).__repr__()
s = Something(42)
print(s)
BYPASS: <Something object at 0x00000134C9BA6848>
----------
_______________________________________
Python tracker <[email protected]>
<https://bugs.python.org/issue29270>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe:
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com