Python 类的一些BIF
issubclass
1 issubclass(cls, class_or_tuple, /) 2 Return whether 'cls' is a derived from another class or is the same class. 3
1 class A: 2 pass 3 4 class B(A): 5 pass 6 7 class C: 8 pass 9 10 print(issubclass(A,(B,A))) # 一个类会被认为自己的子类 . 11 12 print(issubclass(A,B)) # 第一个是否是第二个类的子类 13 14 print(issubclass(B,(A,C))) 15 16 17 help(issubclass)
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 True 3 True 4 True 5 False 6 >>>
isinstance
1 #isinstance 检查一个实例对象是否属于一个类 . (第二个也可以是一个元祖 可以有多个类.) 2 class A: 3 pass 4 5 class B(A): 6 pass 7 8 class C: 9 pass 10 11 b1=B() 12 print(isinstance(b1,A)) 13 14 print(isinstance(b1,B)) 15 16 print(isinstance(b1,C)) 17 18 19 print(isinstance(b1,(C,B)))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 True 3 True 4 False 5 True 6 >>>
hasattr 判断一个 对象里面有没有该属性
1 # hasattr(第一个是对象.第二个是属性名) (attr=attribute 属性) 2 class A: 3 pass 4 5 class B(A): 6 pass 7 8 class C: 9 def __init__(self,x=0): 10 self.x=x 11 12 #测试一个对象是否有指定的和属性. 13 c1=C() 14 print(hasattr(c1,'x'))# 属性必须用 '' 来 修饰
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 True 3 >>>
getattr(实例对象,属性,不存在打印的值)(attribute 属性) 得到一个实例对象的属性的值 , 如果该属性不存在则打印第三个参数
1 # getattr(object,name[,default) 返回对象指定的属性值 如果指定的参数不存在 如果你制订了default则会defaulf打印出来,否则会有一个arrtibute的异常 , 2 class A: 3 pass 4 5 class B(A): 6 pass 7 8 class C: 9 def __init__(self,x=0): 10 self.x=x 11 12 c1=C() 13 14 print(getattr(c1,'x')) 15 print(getattr(c1,'y','您所访问的属性不存在'))
1 0 2 您所访问的属性不存在 3 >>>
setattr(实例对象,属性,值) 给实例对象一个属性值 如果该属性不存在则 建立属性然后赋值 .
2 class A: 3 pass 4 5 class B(A): 6 pass 7 8 class C: 9 def __init__(self,x=0): 10 self.x=x 11 12 c1=C() 13 print(getattr(c1,'y','您访问的属性不存在')) 14 15 print(setattr(c1,'y',0)) 16 17 print(getattr(c1,'y','您访问的属性不存在'))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 您访问的属性不存在 3 None 4 0 5 >>>
delattr(实例变量,属性) 属性不存在则抛出 AttributeError的异常
2 class A: 3 pass 4 5 class B(A): 6 pass 7 8 class C: 9 def __init__(self,x=0): 10 self.x=x 11 12 c1=C() 13 print(getattr(c1,'y','您访问的属性不存在')) 14 15 print(setattr(c1,'y',0)) 16 17 print(getattr(c1,'y','您访问的属性不存在')) 18 19 print(delattr(c1,'y')) 20 21 print(getattr(c1,'y','您访问的属性不存在'))
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 您访问的属性不存在 3 None 4 0 5 None 6 您访问的属性不存在 7 >>>
property(fget=None,fset=None,fdel=None,doc=None)
(得到 , 重置 , 删除 . )
1 class C: 2 def __init__(self,size=10): 3 self.size=size 4 5 def getSize(self): 6 return self.size 7 8 def setSize(self,value): 9 self.size=value 10 11 def delSize(self): 12 del self.size 13 14 x=property(getSize,setSize,delSize,'这个难道是注释') 15 16 c1=C() # 生成一个 对象实例 17 18 print(c1.getSize()) # 调用getSize()函数 . 19 20 print(c1.x) 21 22 c1.x=18 23 24 print(c1.size) # 调用 size 属性 . 25 26 print(c1.getSize()) 27 28 del c1.x 29 30 print(c1.size)
1 =============== RESTART: C:/Users/Administrator/Desktop/new.py =============== 2 10 3 10 4 18 5 18 6 Traceback (most recent call last): 7 File "C:/Users/Administrator/Desktop/new.py", line 30, in <module> 8 print(c1.size) 9 AttributeError: 'C' object has no attribute 'size' 10 >>>