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
  • 相关阅读:
    SQLServer2005删除log文件和清空日志的方案
    使用sql语句创建修改SQL Server标识列(即自动增长列)
    C# 使用ffmpeg.exe进行音频转换完整demo-asp.net转换代码
    web页面如何播放amr的音频文件
    IIS7.5 伪静态 脚本映射 配置方法
    多表数据连接 Left join
    .NET 开发快捷键大全
    微信开发-ACCESS TOKEN 过期失效解决方案
    HTML5常用的方法
    IIS 7.0 部署MVC
  • 原文地址:https://www.cnblogs.com/tqing/p/10192555.html
Copyright © 2011-2022 走看看