Python中的 type()函数
type()
方法返回作为参数传递的参数(对象)的类类型。 type()函数主要用于调试目的。
可以将两种不同类型的参数传递给 type()函数,单个参数和三个参数。如果传递单个参数type(obj)
,则返回给定对象的类型。如果三个参数type(name, bases, dict)
被传递,它返回一个新的类型对象。
句法 :
type(object)
type(name, bases, dict)
Parameters :
name : name of class, which later corresponds to the __name__ attribute of the class.
bases : tuple of classes from which the current class derives. Later corresponds to the __bases__ attribute.
dict : a dictionary that holds the namespaces for the class. Later corresponds to the __dict__ attribute.
返回类型:
returns a new type class or essentially a metaclass.
代码#1:
# Python3 simple code to explain
# the type() function
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:
# Python3 code to explain
# the type() function
# Class of type dict
class DictType:
DictNumber = {1:'John', 2:'Wick',
3:'Barry', 4:'Allen'}
# Will print the object type
# of existing class
print(type(DictNumber))
# Class of type list
class ListType:
ListNumber = [1, 2, 3, 4, 5]
# Will print the object type
# of existing class
print(type(ListNumber))
# Class of type tuple
class TupleType:
TupleNumber = ('Geeks', 'for', 'geeks')
# Will print the object type
# of existing class
print(type(TupleNumber))
# Creating object of each class
d = DictType()
l = ListType()
t = TupleType()
输出 :
代码#3:
# Python3 code to explain
# the type() function
# Class of type dict
class DictType:
DictNumber = {1:'John', 2:'Wick', 3:'Barry', 4:'Allen'}
# Class of type list
class ListType:
ListNumber = [1, 2, 3, 4, 5]
# Creating object of each class
d = DictType()
l = ListType()
# Will print accordingly whether both
# the objects are of same type or not
if type(d) is not type(l):
print("Both class have different object type.")
else:
print("Same Object type")
输出 :
Both class have different object type.
代码 #4:使用type(name, bases, dict)
# Python3 program to demonstrate
# type(name, bases, dict)
# New class(has no base) class with the
# dynamic class initialization of type()
new = type('New', (object, ),
dict(var1 ='GeeksforGeeks', b = 2009))
# Print type() which returns class 'type'
print(type(new))
print(vars(new))
# Base class, incorporated
# in our new class
class test:
a = "Geeksforgeeks"
b = 2009
# Dynamically initialize Newer class
# It will derive from the base class test
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() 以及从网络爬虫中提取的文本时,它可能不起作用,因为它们可能是不支持字符串函数的不同类型。结果,它会不断抛出错误,这很难调试[将错误视为:GeneratorType has no attribute lower()] 。 type()函数可用于确定提取的文本类型,然后在我们使用字符串函数或对其进行任何其他操作之前将其更改为其他形式的字符串。
- 带有三个参数的type()可用于动态初始化类或具有属性的现有类。它还用于向 SQL 注册数据库表。