David Hirschfield wrote:
I'm having a little problem with some python metaprogramming. I want to
have a decorator which I can use either with functions or methods of
classes, which will allow me to swap one function or method for another.
It works as I want it to, except that I want to be able to do some
things a little differently depending on whether I'm swapping two
functions, or two methods of a class.
Unbounds methods are simply functions which have become attributes of a
class. Especially in Py3, there is *no* difference.
Bound methods are a special type of partial function. In Python, both
are something else, though still callables. Conceptually, a partial
function *is* a function, just with fewer parameters.
Trouble is, it appears that when the decorator is called the function is
not yet bound to an instance, so no matter whether it's a method or
function, it looks the same to the decorator.
Right. Whether it is an A or an A, it looks like an A.
Worse: when the decorator is called, there is no class for there to be
instances of.
This simple example illustrates the problem:
Add a second parameter to tell the decorator which variant of behavior
you want. Or write two variations of the decorator and use the one you want.
tjr
--
http://mail.python.org/mailman/listinfo/python-list