""" open/dulcinea/lib/metaclass.py """ from types import FunctionType class ClassMethodsClass (type): """ A class that uses this class as its type gets all of its methods (except those with names that start with '__') converted into class methods. This is a way to define classes that can act as singleton instances. The str method of classes with this metaclass returns the name of the class. """ def __init__(self, class_name, bases, namespace): for name, obj in namespace.items(): if isinstance(obj, FunctionType) and not name.startswith('__'): setattr(self, name, classmethod(obj)) def __str__(self): return self.__name__