All pastes #495418 Raw Edit

Cody Brocious

public python v1 · immutable
·published 2007-05-18 19:13 UTC
rendered paste body
class Matcher(object):    def __init__(self, cls):        self.cls = cls        def __call__(self, *args):        self.children = args        return self    def __getattr__(self, name):        return Matcher(getattr(self.cls, name))        def __repr__(self):        return self.cls.__name__ + `self.children`class Pattern(object):    def __init__(self, namespace):        self.namespace = namespace    def __call__(self, func):        names = func.func_code.co_names        for name in names:            try:                cls = getattr(self.namespace, name)                func.func_globals[name] = Matcher(cls)            except:                pass        return func()class Foo(object):    class Test(object):        class Omg(object):            pass    class Foo(object):        pass    class Bar(object):        pass@Pattern(Foo)def testPattern():    return \    Test(        Test.Omg(),        Foo(),        Bar()    )print testPattern