Python type()函数
时间:2020-02-23 14:43:38 来源:igfitidea点击:
Python type()函数
Python有很多内置功能。
type()函数用于获取对象的类型。
Python type()函数语法为:
type(object) type(name, bases, dict)
当将单个参数传递给type()函数时,它将返回对象的类型。
它的值与object .__ class__实例变量相同。当传递三个参数时,它将返回一个新的类型对象。
它是用于动态动态创建类的。
"名称"字符串成为类名称。
与类的__name__属性相同。"基"元组指定基类。
与类的__bases__属性相同。" dict"字典用于创建类主体。
与类的__dict__属性相同。
Python type()示例
我们来看一些使用type()函数的示例。
1.检查对象的类型
x = 10 print(type(x)) s = 'abc' print(type(s)) from collections import OrderedDict od = OrderedDict() print(type(od)) class Data: pass d = Data() print(type(d))
输出:
<class 'int'> <class 'str'> <class 'collections.OrderedDict'> <class '__main__.Data'>
注意,type()函数返回带有模块名称的对象的类型。
由于我们的Python脚本没有模块,因此该模块成为__main__。
2.创建动态类
假设我们有以下程序。
class Data: """Data Class""" d_id = 10 class SubData(Data): """SubData Class""" sd_id = 20
让我们打印这些类的一些属性。
print(Data.__class__) print(Data.__bases__) print(Data.__dict__) print(Data.__doc__) print(SubData.__class__) print(SubData.__bases__) print(SubData.__dict__) print(SubData.__doc__)
输出:
<class 'type'> (<class 'object'>,) {'__module__': '__main__', '__doc__': 'Data Class', 'd_id': 10, '__dict__': <attribute '__dict__' of 'Data' objects>, '__weakref__': <attribute '__weakref__' of 'Data' objects>} Data Class <class 'type'> (<class '__main__.Data'>,) {'__module__': '__main__', '__doc__': 'SubData Class', 'sd_id': 20} SubData Class
我们可以使用type()函数创建类似的类。
Data1 = type('Data1', (object,), {'__doc__': 'Data1 Class', 'd_id': 10}) SubData1 = type('SubData1', (Data1,), {'__doc__': 'SubData1 Class', 'sd_id': 20}) print(Data1.__class__) print(Data1.__bases__) print(Data1.__dict__) print(Data1.__doc__) print(SubData1.__class__) print(SubData1.__bases__) print(SubData1.__dict__) print(SubData1.__doc__)
输出:
<class 'type'> (<class 'object'>,) {'__doc__': 'Data1 Class', 'd_id': 10, '__module__': '__main__', '__dict__': <attribute '__dict__' of 'Data1' objects>, '__weakref__': <attribute '__weakref__' of 'Data1' objects>} Data1 Class <class 'type'> (<class '__main__.Data1'>,) {'__doc__': 'SubData1 Class', 'sd_id': 20, '__module__': '__main__'} SubData1 Class
请注意,我们无法使用type()函数在动态类中创建函数。
type()函数的实际用法
Python是一种动态类型的语言。
因此,如果我们想知道参数的类型,可以使用type()函数。
如果要确保函数仅适用于特定类型的对象,请使用isinstance()函数。
假设我们要创建一个函数来计算两个整数。
我们可以通过以下方式实现它。
def calculate(x, y, op='sum'): if not(isinstance(x, int) and isinstance(y, int)): print(f'Invalid Types of Arguments - x:{type(x)}, y:{type(y)}') raise TypeError('Incompatible types of arguments, must be integers') if op == 'difference': return x - y if op == 'multiply': return x * y # default is sum return x + y
isinstance()函数用于验证输入参数类型。
当验证失败时,type()函数用于打印参数的类型。