zoukankan      html  css  js  c++  java
  • 内置函数拾遗:isinstance和issubclass

    isinstance

      isinstance(obj1,obj2):判断对象与类之间的关系,判断第一个参数是否是第二个参数的实例。

    print(isinstance(1, int))   #判断第一个值是否是第二个值得实例
    >>>
    True
    print(isinstance('1', str))
    >>>
    True
    

      回顾一下,之前我们学过的type()函数,is操作符用来比较两个对象的内存地址是否相等。

      那么type()函数和isinstance()函数两者有什么区别呢?

    print(type(1) is int)
    print(isinstance(1,int))
    >>>
    True
    True
    
    #从上面的结果看,两者的结果都是True,那么type()与isinstance()的区别在哪呢?
    #从接下来的例子,就能够清晰看出来。
    
    class A:pass
    class B(A):pass
    b = B()
    
    print(isinstance(b, B))   #True
    print(isinstance(b, A))   #True
    
    print(type(b))         #<class '__main__.B'>
    print(type(b) is B)    #True
    print(type(b) is A)    #False
    
    #总结:
        isinstance()是可以用在继承的关系上;而type()不能用来检测继承关系。
    

    issubclass

      issubclass(obj1,obj2):用来描述一个类与另一个类之前的关系,判断一个类是否是另一个类的子类。

    class A:pass
    class B(A):pass
    
    print(issubclass(A, B))  #False
    print(issubclass(B, A))  #True
    
    #总结:
        第一个参数是子类,第二个参数是父类
    

      

  • 相关阅读:
    2月16号
    2月15号
    dubbo与springmvc的简单使用
    dubbo与zookeeper学习中的问题
    linux下jdk与tomcat的安装与配置
    mysql存储引擎
    mysql存储过程
    mysql子查询与连接查询
    mysql简单增删改查(CRUD)
    SpringMvc执行流程
  • 原文地址:https://www.cnblogs.com/hebbhao/p/9593471.html
Copyright © 2011-2022 走看看