Registry of Methods via Decorators

bayerj bayerj at in.tum.de
Thu Jun 22 15:32:25 CEST 2006


I want to make a registry of methods of a class during creation. My
attempt was this

""" classdecorators.py

Author: Justin Bayer
Creation Date: 2006-06-22
Copyright (c) 2006 Chess Pattern Soft,
All rights reserved.  """

class decorated(object):

    methods = []

    @classmethod
    def collect_methods(cls, method):
        cls.methods.append(method.__name__)
        return method

class dec2(decorated):

    @collect_methods
    def first_func(self):
        pass

    @collect_methods
    def second_func(self):
        pass


def main():
    print dec2.methods

if __name__ == '__main__':
    main()

This does not work and exits with "NameError: ("name 'collect_methods'
is not defined",)". Which is understandable due to the fact that the
class dec2 is not complete.

Anyone can give me a hint how to work around this?




More information about the Python-list mailing list