def do(self, player, line, attribute, target, value):
        """
        Dispatch handling to an attribute-specific method.

        @type attribute: C{unicode}
        @param attribute: The model-level attribute of which to manipulate
            the value.  Handling of each attribute will be dispatched to a
            C{set_}-prefixed method for that attribute based on this value.

        @type target: L{Thing}
        @param target: The model object to manipulate.

        @type value: C{unicode}
        @param value: The new value for the specified attribute.
        """
        try:
            method = getattr(self, "set_" + attribute.upper())
        except __HOLE__:
            raise eimaginary.ActionFailure(
                events.ThatDoesntMakeSense(
                    actor=player.thing,
                    actorMessage="You cannot set that."))
        else:
            method(player, line, target, value)
dataset/ETHPy150Open twisted/imaginary/imaginary/action.py/Set.do