Questions
I have a decorator in PY. It is a method and takes the function as a parameter. I want to create a directory structure based based on the passed function. I am using the module name for the parent directory but would like to use the classname for a subdirectory. I can t figure out how to get the name of the class that owns the fn object.
My Decorator:
def specialTest(fn):
filename = fn.__name__
directory = fn.__module__
subdirectory = fn.__class__.__name__ #WHERE DO I GET THIS
Answers
If fn is an instancemethod, then you can use fn.im_class.
>>> class Foo(object):
... def bar(self):
... pass
...
>>> Foo.bar.im_class
__main__.Foo
Note that this will not work from a decorator, because a function is only transformed into an instance method after the class is defined (ie, if @specialTest was used to decorate bar, it would not work; if it s even possible, doing it at that point would have to be done by inspecting the call stack or something equally unhappy).
Source
License : cc by-sa 3.0
http://stackoverflow.com/questions/7680446/get-python-functions-owning-class-from-decorator
Related