python判断是否为类的实例,是否为子类

版权声明:码字不易,且看且珍惜!交流:Wechat: suihailiang0816 QQ: 931762054 转载并修改内容请与我联系 https://blog.csdn.net/weixin_41010198/article/details/89359586

首先定义两个类,一个父类,一个子类,这里并不定义类体内容,仅举例说明

class Parent:
    pass
 
class Son(Parent):
    pass

一、获取类实例的名称

格式: 实例名.__class__.__name__

>>> class Parent:
...     pass
...
>>> class Son(Parent):
...     pass
...
>>> par = Parent()
>>> par.__class__.__name__
'Parent'
>>> son = Son()
>>> son.__class__.__name__
'Son'
>>>

二、判断一个类是否是另外一个类的实例

使用函数:issubclass(), 如果是父类的子类,则返回布尔值 True
格式:issubclass(参数1, 参数2)

  • 参数1:子类的名字
  • 参数2:父类的名字
>>> class Parent:
...     pass
...
>>> class Son(Parent):
...     pass
...
>>> issubclass(Son, Parent)
True
>>> type(issubclass(Son, Parent))
<class 'bool'>

三、判断某个实例是否是指定类的实例

使用函数:isinstance()
格式:isinstance(参数1, 参数2)

  • 参数1:实例化的对象名
  • 参数2:类名
>>> class Parent:
...     pass
...
>>> class Son(Parent):
...     pass
...
>>> par = Parent()
>>> par.__class__.__name__
'Parent'
>>> son = Son()
>>> son.__class__.__name__
'Son'
>>> isinstance(par, Parent)
True
>>> isinstance(son, Son)
True
>>> isinstance(son, Parent)    # 子类实例化的对象,同样也是父类的实例化对象,这就是继承的灵动之处
True
>>> isinstance(par, Son)
False
>>>

从上面可以isinstance(son, Parent) 返回的也是True值,子类实例化的对象,同样也是父类的实例化对象,这就是继承的灵动之处,所以子类可以调用父类的所有方法和属性。

猜你喜欢

转载自blog.csdn.net/weixin_41010198/article/details/89359586
今日推荐