Python isinstance和issubclass函数的具体使用
isinstance和issubclass 是Python两个非常实用的内置函数。虽然它们都可以用来判断变量类型,但是两者骨子里还是有一定的差别。
isinstance函数
isinstance(object,classinfo)
用来判断 object
是否是 classinfo
类型的实例,如果是,返回True,否则返回False。
语法
isinstance(object, classinfo)
参数说明
object
-- 实例对象。classinfo
-- 可以是直接或间接类名、基本类型或者由它们组成的元组。
示例1
class A:
pass
class B(A):
pass
b = B()
print(isinstance(b, A)) # True
print(isinstance(b, B)) # True
print(isinstance(b, (A, B))) # True
上面的示例表明,b
是 A
和 B
类的实例。因此 isinstance(b, A)
和 isinstance(b, B)
等价,并且返回 True
。同时,由于 bool(A) == True
和 bool(B) == True
,而且元组 (A,B)
中至少有一个类型为 True
,因此 isinstance(b, (A, B))
也返回 True
。
示例2
print(isinstance('hello world', str)) # True
print(isinstance(123, str)) # False
上面的示例表明,'hello world' 是 str
类型的实例,而 123
不是。
issubclass函数
issubclass(class, classinfo)
用于判断 class
是否是由 classinfo
类继承而来,如果是,返回True,否则返回False。
语法
issubclass(class, classinfo)
参数说明
class
-- 类。classinfo
-- 类或由类组成的元组。
示例1
class A:
pass
class B(A):
pass
class C(B):
pass
print(issubclass(C, A)) # True
print(issubclass(B, A)) # True
print(issubclass(C, (A, B))) # True
上面的示例表明,C
继承自 B
,而 B
继承自 A
。因此,C
是 A
类的子类和 B
类的子类,B
是 A
类的子类。因此:
issubclass(C, A)
返回True
issubclass(B, A)
返回True
issubclass(C, (A, B))
返回True
示例2
print(issubclass(str, object)) # True
print(issubclass(int, str)) # False
上面的示例表明,str
继承自 object
,因此 issubclass(str, object)
返回 True
。而 int
不是 str
的子类,即不是 str
的直接或间接子类,因此 issubclass(int, str)
返回 False
。
总结
以上就是 isinstance
和 issubclass
的简单介绍和使用示例。完整的使用攻略还需不断的实践和总结。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python issubclass和isinstance函数的具体使用 - Python技术站