class DefaultProperties(object):
    def __init__(self):
        if hasattr(self, '__properties__'):
            for prop in self.__properties__:
                setattr(self, prop[0], None)


class ResponseDecoder(object):
    def __init__(self, rsp=None):
        if rsp:
            self._from_response(rsp)


class State(DefaultProperties, ResponseDecoder):
    """This is a container that represents a state.

    The state can have default
    properties that are created by init.
    """

    def __init__(self, rsp=None):
        DefaultProperties.__init__(self)
        ResponseDecoder.__init__(self, rsp)
