class TypeBaseMeta(type):
    def __new__(cls, name, bases, namespace, **kwds):
        for base in bases:
            namespace['__validators__'] = base.__validators__ + namespace['__validators__']

        return type.__new__(cls, name, bases, namespace, **kwds)

class TypeBase(metaclass=TypeBaseMeta):
    __validators__ = ('presence')

    def __init__(self, *args, **kwargs):
        pass

    def validate_presence(self, flag):
        if self.data:
            return True

class String(TypeBase):
    __validators__ = ('length')

    def validate_length(self, range):
        if len(self.data) in range(*range):
            return True