Using `*args` in the function definition, then `args[1]` (what's `args[1]`?), then catching IndexError is not a great plan. Just put named parameters in the function definition, with default values if needed.

    def update(self, whatever=None, this_arg_you_want=None):