On Wednesday, May 13, 2015 at 5:13:46 AM UTC-5,
[email protected] wrote:
> It's even easier...
There is no obvious way to recover the class name in Python 2. Here is my
test code:
def cmd(command_name):
def _decorator(func):
base = func.__code__ if g.isPython3 else func.func_code
isMethod = 'self' in base.co_varnames
g.trace('method: %5s %s' % (isMethod,func))
return _decorator
@cmd('command1')
def pureFunction(event=None):
g.trace(event)
return ("...exit pureFunction")
class MyClass:
@cmd('command2')
def aMethod(self, event=None):
g.trace('self',self,'event',event)
With Python 3 this produces
_decorator method: False <function pureFunction at 0x08A11A08>
_decorator method: True <function MyClass.aMethod at 0x08A11A50>
With Python 2 it produces:
_decorator method: False <function pureFunction at 0x094C05F0>
_decorator method: True <function aMethod at 0x094C06F0>
You would think there recovering the class name would be easy. But no.
func.im_class does not exist because func is not a bound method.
__qualname__ exists only in Python 3. A close examination of dir(func)
shows no other obvious way to get the class name.
So it looks like we're stuck. Any ideas?
Edward
--
You received this message because you are subscribed to the Google Groups
"leo-editor" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/leo-editor.
For more options, visit https://groups.google.com/d/optout.