class ModelMetaclass(type): ''' Metaclass for model objects. ''' def __new__(cls, name, bases, attrs): # skip base Model class: if name=='Model': return type.__new__(cls, name, bases, attrs)
# store all subclasses info: if not hasattr(cls, 'subclasses'): cls.subclasses = {} if not name in cls.subclasses: cls.subclasses[name] = name else: logging.warning('Redefine class: %s' % name)