def is_builtin_type(typ):
if type(typ) is type:
try:
return getattr(__builtins__, typ.__name__) == typ
except AttributeError:
pass
return False
is_class = lambda typ: repr(typ).find("<class ") == 0
class Foo:
pass
class Bar(object):
pass
# Overrided str
class str(object):
pass
# Copied int
int2 = int
check_ls = [(int, "int"), (Foo, "class Foo"), (Bar, "class Bar(object)"),
(str, "Overrided str"), (int2, "Copied int")]
for typ, msg in check_ls:
print msg
print " is_class:", is_class(typ)
print " is_builtin_type:", is_builtin_type(typ)
print ""