Paddy O'Loughlin wrote:
Hi,
I was wondering if there was a shorthand way to get a reference to a method object from within that method's code.

Take this code snippet as an example:
import re

class MyClass(object):
    def find_line(self, lines):
        if not hasattr(MyClass.do_work, "matcher"):
            MyClass.do_work.matcher = re.compile("\d - (.+)")
        for line in lines:
            m = MyClass.do_work.matcher.match(line)
            if m:
                return m.groups()

Here, I have a method which uses a regular expression object to find matches. I want the regexp object to be tied to the function, but I don't want to have to recreate it every time the function is called

Just an idea:

------------------------------
import re

def matches(patt):
    def wrapper(fn):
        def inner(self, *args, **kw):
            return fn(self, *args, **kw)
        inner.match = re.compile(patt).match
        return inner
    return wrapper

class MyClass(object):

    @matches('ab(.*)')
    def func(self):
        print 'hi'
        return 5

c = MyClass()

ret = c.func()
print ret
print c.func.match('abc').groups()
------------------------------------


--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to