'Args:
setup_func: a function that returns the Op in the graph
run_before (bool): run the Op before training
run_as_trigger (bool): run the Op on every trigger
run_step (bool): run the Op every step (along with training)
verbose (bool): pring logs when the op is run.
Examples:
The `DQN Example
<https://github.com/ppwwyyxx/tensorpack/blob/master/examples/DeepQNetwork/>`_
uses this callback to update target network.'

def __init__(self, setup_func, run_before=True, run_as_trigger=True, run_step=False, verbose=False):

    self.setup_func = setup_func
    self.run_before = run_before
    self.run_as_trigger = run_as_trigger
    self.run_step = run_step
    self.verbose = verbose
