The other day I was coding when suddenly I discovered myself struggling with a simple problem but confuse solution (at least in a pythonic way to go).
The code was supposed to just download some files, for that, it would call some DownloadController passing it a callback so to received events such as init, progress, error and success.
However, my code didn't need at all these events. With this came to my mind some solutions

Change DownloadController to have a default callback=None and check for it so to ignore sending events in this case
Have NullCallbackImpl which adheres to callback interface but do nothing (just pass on each event)

First approach didn't like it because the code would be kind of messy and not well-design.
So, I stick with the second approach... Questions:

How good (maybe 'how bad') would it be to have a null_callback = mock.Mock()? (using python mock library from Michael Foord) 

Is there any library that do this?

Or should I stick with creating a NullCallbackImpl implementing each method with a simple pass?
You discovered a new use case for DownloadController - "Let the user customize the callback". It sounds like you have control over the Downloadcontroller source. It could define a DownloadCallback class that exposes the events as methods but does nothing with them. The Controller would accept None (do nothing) or anything that implements the DownloadController interface.
I think using mock for real code is more than a bit odd... it creates yet another dependency that needs to be met for users of your module.
Which is the recommended way to use the Null Pattern in Python?