Richard, about the first one

do_something() would call the function
do_something would return the function object
do_something "string" - the lack of operator would make it call do_something("string"). Just my suggestion.

I have used subclassing, but it's not so friendly. You have always to create a instance of the new class to use you're custum methods. Just adding them to the class would be a lot nicer.