📜  Python | type()函数

📅  最后修改于: 2020-07-22 04:52:43             🧑  作者: Mango

type()方法返回作为参数传递的参数(对象)的类类型。type()函数主要用于调试目的。

可以将两种不同类型的参数传递给type()函数,即单个参数和三个参数。如果type(obj)传递了单个参数,则返回给定对象的类型。如果type(name, bases, dict)传递了三个参数,它将返回一个新的类型对象。

句法 :

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

参数:

name:类的名称,该名称后来对应于该类的__name__属性。
bases:当前类的派生类的元组。以后对应于__bases__属性。
dict:一个字典,用于保存类的名称空间。以后对应于__dict__属性。

返回类型:

返回一个新的类型类或本质上是一个元类。

 

代码1: 

# Python3简单代码解释type()函数 
print(type([]) is list) 
  
print(type([]) is not list) 
  
print(type(()) is tuple) 
  
print(type({}) is dict) 
  
print(type({}) is not list) 

输出: 

True
False
True
True
True

代码2: 

# 解释type()函数的Python3代码 
  
# 类型dict类 
class DictType: 
    DictNumber = {1:'John', 2:'Wick', 
                  3:'Barry', 4:'Allen'} 
      
    # Will print the object type 
    # of existing class 
    print(type(DictNumber)) 
  
# 类型列表类别     
class ListType: 
    ListNumber = [1, 2, 3, 4, 5] 
      
    # Will print the object type 
    # of existing class 
    print(type(ListNumber)) 
  
# 元组类型     
class TupleType: 
    TupleNumber = ('Geeks', 'for', 'geeks') 
      
    # Will print the object type 
    # of existing class 
    print(type(TupleNumber)) 
  
# 创建每个类的对象     
d = DictType() 
l = ListType() 
t = TupleType() 

输出: 

 
< class'list'> < 
class'tuple'>

代码3: 

# 解释type()函数的Python3代码 
  
 class DictType: 
    DictNumber = {1:'John', 2:'Wick', 3:'Barry', 4:'Allen'} 
      
# 类型列表类别     
class ListType: 
    ListNumber = [1, 2, 3, 4, 5] 
  
# 创建每个类的对象    
d = DictType() 
l = ListType() 
  
# 无论两个对象是否属于同一类型,都将进行相应打印   
if type(d) is not type(l): 
    print("两个类都有不同的对象类型.") 
else: 
    print("相同的对象类型") 

输出: 

两个类都有不同的对象类型.

代码4:使用type(name, bases, dict) 

# Python3程序演示类型
# type(name, bases, dict) 
  
# 动态类型初始化为type()的新类(无基类) 
new = type('New', (object, ), 
      dict(var1 ='GeeksforGeeks', b = 2009)) 
  
# 打印type()返回类'type' 
print(type(new)) 
print(vars(new)) 
  
  
# 基类,纳入我们的新类
class test: 
    a = "Geeksforgeeks"
    b = 2009
  
# 动态初始化较新的类,它将从基类测试派生 
newer = type('Newer', (test, ), 
        dict(a ='Geeks', b = 2018)) 
          
print(type(newer)) 
print(vars(newer)) 

输出: 

{'__module__': '__main__', 'var1': 'GeeksforGeeks', '__weakref__': , 'b': 2009, '__dict__': , '__doc__': None}

{'b': 2018, '__doc__': None, '__module__': '__main__', 'a': 'Geeks'}

应用范围:

  • type()函数基本上用于调试目的。当将其他字符串函数(例如.upper()、. lower()、. split())与从Web爬网程序提取的文本一起使用时,它可能无法正常工作,因为它们的类型可能不同,不支持字符串函数。结果,它将保持抛出错误的状态,这很难调试[将错误视为:GeneratorType没有属性lower()]。可以在那时使用type()函数来确定提取的文本的类型,然后在我们使用字符串函数或对其进行任何其他操作之前,将其更改为其他形式的字符串。
  • 具有三个参数的type()可用于动态初始化类或具有属性的现有类。它还用于通过SQL注册数据库表。