so you *do* still have to tell it what kind of formatting you want. granted, being able to pass in an object is a cool, but I'm having trouble envisioning a situation where that would be more useful than the old way of doing it.
Yes, but you don't have to specify the *TYPE* of the object. That is the point. Formatting stays the same regardless of the number's TYPE (indeed, regardless of the object type - classes can handle the format string however they want). The old way requires you to know the type.
Old busted way is basically sprintf - everything breaks if the type is wrong.
And honestly, who wants to remember if they are supposed to use %s or %d or %f or is it %F etc.... Especially in a language like Python where you never care what the type is - right up until you want to print it. I can't tell you how many times I've just done
print 'blah blah: %s' % str(some_argument)
because I didn't know what the type would be.