isinstance() 判断对象所属类型,包括继承关系
class A:pass class B(A):pass b = B() print(isinstance(b,B)) #o,t True print(isinstance(b,A)) #o,t True
list()函数其实也是一种对象
l = list() print(l) # []
print(type(l)) # <class 'list'>
class mystr(str):pass ms = mystr('alex') print(ms) # alex
还是上面的例子,is 和isinstance的区别
print(type(ms) is str) # False 不包含继承关系,只管一层 print(isinstance('alex',str)) # True 包含所有的继承关系
is和 == 的区别
== 值相等 值运算
is 内存地址相等 身份运算
is要求更苛刻
不仅要求值相等,还要求内存地址相同
issubclass() 判断类与类之间的继承关系
# issubclass 是子类 class A:pass class B(A):pass print(issubclass(B,A)) # B是A的子类 true print(issubclass(A,B)) #A 是B的子类,false