【我要学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

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值