zoukankan      html  css  js  c++  java
  • isinstance、issubbclass

    Python提供了如下两个函数来检查类型:

    isinstance(obj, class_or_tuple):检查 obj 是否为后一个类或元组包含的多个类中任意类的对象。

    issubclass(cls, class_or_tuple):检查 cls 是否为后一个类或元组包含的多个类中任意类的子类。

    isinstance

    判断一个对象是否是另一个类的实例。

    (传两个参数,一个是对象,一个是类)

    如果是: True
    如果不是: False
    
    isinstance:
    class Foo:
        pass
    
    class Boo:
        pass
    
    foo_obj = Foo()
    boo_obj = Boo()
    
    print(isinstance(foo_obj, Foo))  # True
    print(isinstance(boo_obj, Foo))  # False
    

    isinstance() 与 type() 区别

    • type() 不会认为子类是一种父类类型,不考虑继承关系。
    • isinstance() 会认为子类是一种父类类型,考虑继承关系。

    如果要判断两个

    类型是否相同推荐使用 isinstance()。



    issubclass

    判断一个类是否是另一个类的子类。

    (传两个参数,一个是子类,一个是父类)

    如果是: True
    如果不是: False
    
    # issubclass
    class Father:
        pass
    
    class Sub(Father):
        pass
    
    class Foo:
        pass
    
    print(issubclass(Sub, Father))  # True
    print(issubclass(Foo, Father))  # False
    

    Python 为所有类都提供了一个 __bases__属性,通过该属性可以查看该类的所有直接父类(基类),该属性返回所有直接父类组成的元组。例如如下代码:

    class A:
        pass
    class B:
        pass
    class C(A, B):
        pass
    print('类A的所有父类:', A.__bases__)
    print('类B的所有父类:', B.__bases__)
    print('类C的所有父类:', C.__bases__)
    

    结果:

    类A的所有父类: (<class 'object'>,)
    类B的所有父类: (<class 'object'>,)
    类C的所有父类: (<class '_main_.A'>, <class '_main_.B'>)

    从上面的运行结果可以看出,如果在定义类时没有显式指定它的父类,则这些类默认的父类是 object 类。


    subclasses

    Python 还为所有类都提供了一个 _subclasses_() 方法,通过该方法可以查看该类的所有直接子类,该方法返回该类的所有子类组成的列表。例如在上面程序中增加如下两行:

    print('类A的所有子类:', A._subclasses_())

    print('类B的所有子类:', B._subclasses_())

    运行上面代码,可以看到如下输出结果:

    类A的所有子类: [<class '_main_.C'>]
    类B的所有子类: [<class '_main_.C'>]

  • 相关阅读:
    python3安装 MAC
    MacOS三个比较接地气实用的终端命令
    maya界面字体怎么设置大小?
    Mac 下 Android Studio 连 夜神模拟器 调试以及真机调试方法
    [macOS] Mojave10.14 夜神安卓模拟器启动问题
    解决MAC电脑系统设置的安全性与隐私下通用没有任何来源选项
    一个分析“文件夹”选择框实现方法的过程
    windows下nginx+php简单配置
    使用windbg抓取崩溃文件和分析的过程
    解决工作中遇到的一个"打开,保存"文件框的bug的过程
  • 原文地址:https://www.cnblogs.com/kai-/p/12071053.html
Copyright © 2011-2022 走看看