type 判断类型或创建类

内置函数(类)type,Python 官方文档描述如下:

help(type)
Help on class type in module builtins:

class type(object)
 |  type(object_or_name, bases, dict)
 |  type(object) -> the object's type
 |  type(name, bases, dict) -> a new type
 |  

传入一个参数时,返回对象的类型。推荐使用 isinstance() 内置函数来检测对象的类型,因为它会考虑子类的情况。

传入三个参数时,返回一个新的 type 对象。这在本质上是 class 语句的一种动态形式。name 参数是字符串即类名并且会成为 __name__ 属性;bases 元组列出基类并且会成为 __bases__ 属性;而 dict 字典为包含类主体定义的命名空间并且会被复制到一个标准字典成为 __dict__ 属性。

type(type)
type
type(int), type(object)
(type, type)
isinstance(int, object)
True
class A:
    a = 1
A.__name__, A.__bases__, A.__dict__
('A',
 (object,),
 mappingproxy({'__module__': '__main__',
               'a': 1,
               '__dict__': <attribute '__dict__' of 'A' objects>,
               '__weakref__': <attribute '__weakref__' of 'A' objects>,
               '__doc__': None}))
A = type('A', (object,), dict(a=1))
A.__name__, A.__bases__, A.__dict__
('A',
 (object,),
 mappingproxy({'a': 1,
               '__module__': '__main__',
               '__dict__': <attribute '__dict__' of 'A' objects>,
               '__weakref__': <attribute '__weakref__' of 'A' objects>,
               '__doc__': None}))