in reply to Treating classes as objects

You say that you want to do things "before the first call" and "after the last call".

IMHO, the best way to achieve that is to make your API reflect it.

So either require the caller to call a function before and after, or roll all those calls into a single function, "add_all_columns", which does the pre- and post- work internally.