一、issubclass(class,classinfo):如果说第一个参数是第二个参数的子类则返回true
注意:一个类会被认为是自身的子类;classinfo 可以是类对象组成的元祖,只要class是其中
任何一个候选类的子类,则返回true
class A: pass class B(A): pass print(issubclass(B,A))#结果True print(issubclass(B,B))#结果True print(issubclass(B,object))#结果True class C: pass print(issubclass(B,C))#结果False print(issubclass(B,(A,C)))#结果True
二、isinstance(object,classinfo):检查一个实例对象是否属于一个类,classinfo可以为元祖
注意:如果第一个参数不是对象,则永远返回False
如果第二个参数不是类或者由类对象组成的元祖,会抛出一个TypeError异常
class A: pass class B(A): pass class C: pass b1 = B() print(isinstance(b1,B))#结果:True print(isinstance(b1,A))#结果:True print(isinstance(b1,C))#结果:False
三、hasattr(object,name):测试object对象里面是否有指定的name属性
class C: def __init__(self,x=0): self.x = x c1 = C() print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错
四、getattract(object,name[,default]):返回对象指定的属性值,如果
指定的属性值不存在,如果此时设定了default参数,则会将default参数打印出来
class C: def __init__(self,x=0): self.x = x c1 = C() print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错 print(getattr(c1,'x'))#结果0, print(getattr(c1,'xd','您所访问的属性不存在'))#结果:您所访问的属性不存在
五、setattr(object,name,value):设置对象指定属性值,如果指定的属性不存在
那么会新建立一个属性并赋值
class C: def __init__(self,x=0): self.x = x c1 = C() print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错 print(getattr(c1,'x'))#结果0, print(getattr(c1,'xd','您所访问的属性不存在'))#结果:您所访问的属性不存在 setattr(c1,'xd','hjah') print(getattr(c1,'xd','您所访问的属性不存在'))#结果:hjah
六、delattr(object,name):删除对象中的属性
class C: def __init__(self,x=0): self.x = x c1 = C() print(hasattr(c1,'x'))#结果:True 其中x必须要用引号否则报错 print(getattr(c1,'x'))#结果0, print(delattr(c1,'x'))#结果None print(delattr(c1,'x'))#存在就会删除,不存在则报错 print(delattr(c1,'x')) AttributeError: x #为了避免delattr 报错,可以先通过hasattr来检测属性是否存在,存在则进行删除七、property(fget = None,Fset = None,Fdel = None,doc = None):通过属性来设置属性
class C: def __init__(self,size = 10): self.size = size def getSize(self): return self.size def setSize(self,value): self.size = value def delSize(self): del self.size x = property(getSize,setSize,delSize) c1 = C() print(c1.getSize())#结果:10 print(c1.x,'----------')#结果:10 c1.setSize(12)#给size赋值为12 print(c1.getSize())#结果:12 print(c1.x,'----------')#结果:12 c1.x = 22#给size赋值为22 print(c1.getSize())#结果:22 print(c1.x,'----------')#结果:22 del c1.x#删除 print(c1.x,'----------')#结果报错:AttributeError: 'C' object has no attribute 'size'