1 #一些常用的BIF和使用实例 2 3 #------------------------------------------------------------------- 4 #issubclass 判断一个类是否是另外一些类的子类 5 #issubclass(class,classinfo) classinfo 可以是类对象组成的元组,只要class与其中任何一个候选类的子类,则返回True 6 class A: 7 pass 8 class B(A): 9 pass 10 class C: 11 pass 12 13 print("B是否是A的子类:",issubclass(B,A)) #True 14 print("B是否是B的子类:",issubclass(B,B)) #注意:它返回True,认为B是B的子类 15 print("B是否是C的子类:",issubclass(B,C)) #False 16 print("B是否是A、B、C中某个类的子类:",issubclass(B,(A,B,C))) #True 17 #------------------------------------------------------------------- 18 19 #------------------------------------------------------------------- 20 #isinstance 判断一个对象是否是某些类型 21 #isinstance(object,classinfo) #第一个参数是实例对象,第二个参数是类或者是一堆类对象的元组 22 class A: 23 pass 24 class B(A): 25 pass 26 class C: 27 pass 28 29 b = B() 30 print("b是否是A类型的:",isinstance(b,A)) #True 31 print("b是否是B类型的:",isinstance(b,B)) #True 32 print("b是否是C类型的:",isinstance(b,C)) #False 33 print("b是否是A、B、C中其中一种类型的:",isinstance(b,(A,B,C))) #True 34 print("故意犯错:",isinstance(B,(A,B,C))) #这里第一个参数如果不是实例对象,将永远返回False 35 #------------------------------------------------------------------- 36 37 #------------------------------------------------------------------- 38 #hasattr(object,name) 是否有属性,name是一个字符串 39 #getattr(object,name[,default]) 获取属性,default是字符串,当获取失败时返回 40 #setattr(object,name,value) 设置属性 41 #delattr(object,name) 删除属性 42 class A: 43 def __init__(self, x=1): 44 self.x = x 45 a = A() 46 if hasattr(a,"x"): 47 print("有") 48 print(getattr(a,"y","对不起没有y这个属性")) 49 setattr(a,"y",10) 50 print(a.y) 51 delattr(a,"y") 52 #------------------------------------------------------------------- 53 54 #------------------------------------------------------------------- 55 #property 使用一个对象,用对象调用函数,函数设置对象属性值。 56 #property(fget=None,fset=None,fdel=None,doc=None) 57 class Test: 58 59 def __init__(self,size = 1,count = 2): 60 self.size = size 61 self.count = count 62 63 def getSize(self): 64 return self.size 65 def setSize(self,value): 66 self.size = value 67 def delSize(selfCount): 68 del self.size 69 70 def getCount(self): 71 return self.count 72 def setCount(self,value): 73 self.count = value 74 def delCount(self): 75 del self.count 76 77 a = property(getSize,setSize,delSize) 78 b = property(getCount,setCount,delCount) 79 80 test = Test() 81 print(test.size) #1 82 test.a = 100 83 print(test.size) #100 84 print(test.a) #100 85 86 print(test.count)#2 87 test.b = 200 88 print(test.count)#200 89 print(test.b) #200 90 91 92 #-------------------------------------------------------------------