printIter is called directly after function evaluations.

If there is a parent object, printIter will check for a parent.printIter function and call that.

If you have things that also need to run in the method printIter, you can create a method:

def _printIter*(self, ... ):

Where the * can be any string. If present, _printIter* will be called at the start of the default printIter call. You may also completely overwrite this function.