type()函数根据所传递的参数返回对象的类型或返回新的类型对象。
type()函数具有两种不同形式:
type(object) type(name, bases, dict)
如果将一个object传递给type(),该函数将返回其类型。
numbers_list = [1, 2] print(type(numbers_list)) numbers_dict = {1: 'one', 2: 'two'} print(type(numbers_dict)) class Foo: a = 0 foo = Foo() print(type(foo))
输出结果
<class 'dict'> <class 'Foo'> <class '__main__.Foo'>
如果需要检查对象的类型,则最好改用Python的isinstance()函数。这是因为isinstance()函数还会检查给定的对象是否是子类的实例。
如果将三个参数传递给type(),它将返回一个新的type对象。
这三个参数是:
参数 | 描述 |
---|---|
name | 班级名称;成为__name__属性 |
bases | 列出基类的元组;成为__bases__属性 |
dict | 字典,它是包含类主体定义的名称空间;成为__dict__属性 |
o1 = type('X', (object,), dict(a='Foo', b=12)) print(type(o1)) print(vars(o1)) class test: a = 'Foo' b = 12 o2 = type('Y', (test,), dict(a='Foo', b=12)) print(type(o2)) print(vars(o2))
输出结果
<class 'type'> {'b': 12, 'a': 'Foo', '__dict__': <attribute '__dict__' of 'X' objects>, '__doc__': None, '__weakref__': <attribute '__weakref__' of 'X' objects>} <class 'type'> {'b': 12, 'a': 'Foo', '__doc__': None}
在程序中,我们使用了Python vars()函数来返回__dict__属性。__dict__用于存储对象的可写属性。
您可以根据需要轻松更改这些属性。例如,如果您需要将的__name__属性值o1更改为'Z',请使用:
o1.__name = 'Z'