type()
方法返回作为参数传递的参数(对象)的类类型。 type()函数主要用于调试目的。
可以将两种不同类型的参数传递给type()函数,即单参数和三参数。如果是单个参数type(obj)
传递后,它返回给定对象的类型。如果三个参数type(name, bases, dict)
传递后,它返回一个新的类型对象。
用法:
type(object)
type(name, bases, dict)
参数:
name:类的名称,该名称后来对应于该类的__name__属性。
bases:当前类派生的类的元组。以后对应于__bases__属性。
dict:包含类的名称空间的字典。以后对应于__dict__属性。
返回类型:
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()
输出:
<class 'dict'> <class 'list'> <class 'tuple'>
代码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没有属性lower()]。那时可以使用type()函数确定所提取文本的类型,然后在使用字符串函数或对其进行任何其他操作之前,将其更改为其他形式的字符串。
- type()具有三个参数的参数可用于动态初始化类或具有属性的现有类。它还用于通过SQL注册数据库表。
注:本文由纯净天空筛选整理自retr0大神的英文原创作品 Python | type() function。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。