zoukankan      html  css  js  c++  java
  • 【我要学python】MethodType和isinstance和Type函数

    一.首先来看isinstance:

    a=6
    
    isinstance(a,int)   #返回Ture
    
    isinstance(a,str)   #返回False
    
    isinstance (a,(str,int,list))    # 是元组中的一个返回 True
    

     二.接下来看Type函数:

    type(666) == int #返回 Ture
    
    type(666) == list #返回False
    
    type({"w":"1","q":"2"})==dict  #返回 Ture
    
    type([1,2,3])==list  #返回 Ture
    

     三.再而来看两者区别:

     1 class A:
     2     pass
     3 class B(A):         #B类继承A类
     4     pass
     5 
     6 isinstance(A(),A) #ture
     7 
     8 type(A())==A #ture
     9 
    10 isinstance(B(),A) #ture
    11 
    12 type(B())==A #false
    • type() 不会认为子类是一种父类类型,不考虑继承关系。

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

    四.MethodType函数

    from types import MethodType 
    #创建一个方法
    def set_age(self, age):
        self.age = age    
    #创建一个类    
    class Student(object):
        pass
    #以上为公共代码
    
    
    s_out = Student()

    #创建一个外部的set_age方法链接到Student内 #将set_age方法绑定到对象s_out上 #MethodType第一个参数是绑定的方法 #第二个是绑定的对象 #第三个是绑定的类名可以忽略
    s_out.set_age = MethodType(set_age,s_out,Student) #调用方法 s_out.set_age(666) #返回值为 666 print s_out.age #错误示范 没有把方法绑定到对象 导致错误 s_wrong = Student() s_wrong.set_age(100) print s_wrong.age
    #将set_age方法绑定到类Student上
    Student.set_age    =    MethodType(set.age,None,Student)
    
    s1=Student()
    s2=Student()
    
    s1.set_age(666)
    s2.set_age(777)
    
    print s1.age
    print s2.age
    
    #返回值为666 777 成功调用
    
    #如果在绑定的时候第二个参数没有写None的话 s2属性就会覆盖s1 只输出777
  • 相关阅读:
    《谈谈推荐系统中的用户行为序列建模》
    《样本权重对逻辑回归评分卡的影响探讨》
    CLOUD计算产品成本嵌套
    冲突操作列表
    查看临时表空间
    设置SQLServer数据库内存
    BPM与OA的区别
    企业门户建设详解
    CRM/PLM/SCM/MES与ERP的联系与区别
    供应链十大优化方法
  • 原文地址:https://www.cnblogs.com/tqing/p/10192555.html
Copyright © 2011-2022 走看看