📜  Python type()

📅  最后修改于: 2020-09-20 04:38:28             🧑  作者: Mango

type() 函数根据所传递的参数返回对象的类型或返回新的类型对象。

type() 函数具有两种不同的形式:

type(object)
type(name, bases, dict)

具有单个对象参数的type()

如果将单个object传递给type() ,则该函数返回其类型。

示例1:获取对象的类型

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))

输出



如果您需要检查对象的类型,最好使用Python的 isinstance() 函数代替。这是因为isinstance() 函数还会检查给定对象是否是子类的实例。

type()具有名称,基数和dict参数

如果将三个参数传递给type() ,它将返回一个新的类型对象。

这三个参数是:

Parameter Description
name a class name; becomes the __name__ attribute
bases a tuple that itemizes the base class; becomes the __bases__ attribute
dict a dictionary which is the namespace containing definitions for the class body; becomes the __dict__ attribute

示例2:创建一个类型对象

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))

输出


{'b': 12, 'a': 'Foo', '__dict__': , '__doc__': None, '__weakref__': }

{'b': 12, 'a': 'Foo', '__doc__': None}

在程序中,我们使用了Python的 vars() 函数 ,该函数返回__dict__属性。 __dict__用于存储对象的可写属性。

您可以根据需要轻松更改这些属性。例如,如果您需要将o1__name__属性更改为'Z' ,请使用:

o1.__name = 'Z'