内置函数id()可返回一个对象的标识,返回值为整数。这个整数通常对应于该对象在内存中的位置。
is运算符用于比较两个对象的标识,依次判断两个对象是否是同一个。(==用来判断值是否相等)
内置函数type()则返回该对象的类型。
对象的类型本身也是一个对象,称为对象的类,并且该对象的类时唯一的,所以可以用type()查询类型,然后用is来判断是否是指定类型。
实例:
mark=[]
if type(mark) is list:
print("mark is list")
结果:
mark is list
上面虽然可以检查类型,但坚检查最佳的方式是内置函数:isinstance(objecy,type),因为isinstance()函数能够辨别继承。
实例:
mark=[]
if isinstance(mark,list):
print("mark is list")
结果:
mark is list
注意:尽管可以在程序中增加类型检查,但过多的检查会影响性能,而且,程序不可能始终定义完全符合继承层次结构的对象。例如,如果上面的mark是从拥有于list相同编程接口但并不是内置list直接继承而来的对象时,判断将不起作用。
给程序添加类型检查的两亿个方法时定义抽象基类(abstract base class),下面会讲到。