type/class __repr__ formatter for Python objects
This was answered in comments, but for completeness:


The name of a class is given by its __name__ attribute.
It's not a good idea to rely on dir to show you all the special methods and attributes. If you read the documentation you'll see that it says:


  The resulting list is not necessarily complete.


The place to look for documentation on special methods is the Data model section of the Python Language Reference.
Python 3.3 added __qualname__, which gives the qualified name, which is more informative than __name__ for nested class definitions.
__name__ doesn't include the module name, so collections.Counter.__name__ is just "Counter". If you want to prepend the module name, find it using the __module__ attribute.
True if not i else False is a long-winded way to write not i.
If possible, iterate over objects, not over indexes. Instead of:

is_empty = [ True  if not i else False for i in objs ]
t = [ type(i).__name__ for i in objs ]
for i in range(len(objs)):
    print("{:&lt;15} {:&lt;6} {:&lt;10s}".format(objs[i],str(is_empty[i]),t[i]))


write:

for obj in objs:
    print("{!r:15} {!r:6} {:10}".format(obj, not obj, type(obj).__name__))