面向对象-内置函数isinstance()和issubclass()

# isinstance()  判断对象所属类型,包括继承关系
  用法:isinstance(对象名,类名)
class A:pass
class B(A):pass
b = B()
print(isinstance(b,B))    #Ture
print(isinstance(b,A))    #Ture

l = list()
print(type(l))     #<class 'list'>
class Mystr(str):pass
ms = Mystr('alxe')
print(ms)          #alxe
print(type(ms) is str)     #False,不包含继承关系,只管一层
print(isinstance(ms,str))     #Ture,包含所有的继承关系

# print(type(ms) is str) # 不包含继承关系,只管一层
# print(isinstance('alex',str)) # 包含所有的继承关系


# == 值相等 值运算
# is 内存地址相等 身份运算
# is要求更苛刻
# 不仅要求值相等,还要求内存地址相同
a = 1111
b = 1111
if a == b:
    print(True)   #值相等,值运算
if a is b:
    print(False)    #内存地址相等,身份运算
# issubclass()  判断类与类之间的继承关系
  用法:issubclass(类名,类名)
class A:pass
class B(A):pass
class C(B):pass
print(issubclass(C,A))    #Ture
print(issubclass(B,A))    #Ture
print(issubclass(A,B))    #False

原文地址:https://www.cnblogs.com/skydragon/p/11679774.html