Python 类的一些BIF

issubclass

 issubclass(cls, class_or_tuple, /)
Return whether 'cls' is a derived from another class or is the same class.
 class A:
pass class B(A):
pass class C:
pass print(issubclass(A,(B,A))) # 一个类会被认为自己的子类 . print(issubclass(A,B)) # 第一个是否是第二个类的子类 print(issubclass(B,(A,C))) help(issubclass)

 
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
True
False
>>>

isinstance

 #isinstance   检查一个实例对象是否属于一个类 . (第二个也可以是一个元祖 可以有多个类.)
class A:
pass class B(A):
pass class C:
pass b1=B()
print(isinstance(b1,A)) print(isinstance(b1,B)) print(isinstance(b1,C)) print(isinstance(b1,(C,B)))
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
True
False
True
>>>

hasattr  判断一个 对象里面有没有该属性

 #   hasattr(第一个是对象.第二个是属性名)    (attr=attribute 属性)
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x #测试一个对象是否有指定的和属性.
c1=C()
print(hasattr(c1,'x'))# 属性必须用 '' 来 修饰
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
True
>>>

getattr(实例对象,属性,不存在打印的值)(attribute 属性)  得到一个实例对象的属性的值 , 如果该属性不存在则打印第三个参数

 #   getattr(object,name[,default)   返回对象指定的属性值 如果指定的参数不存在 如果你制订了default则会defaulf打印出来,否则会有一个arrtibute的异常 ,
class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C() print(getattr(c1,'x'))
print(getattr(c1,'y','您所访问的属性不存在'))
 0
您所访问的属性不存在
>>>

setattr(实例对象,属性,值) 给实例对象一个属性值 如果该属性不存在则 建立属性然后赋值 .

 class A:
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C()
print(getattr(c1,'y','您访问的属性不存在')) print(setattr(c1,'y',0)) print(getattr(c1,'y','您访问的属性不存在'))
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
>>>

delattr(实例变量,属性) 属性不存在则抛出 AttributeError的异常

 class A:    
pass class B(A):
pass class C:
def __init__(self,x=0):
self.x=x c1=C()
print(getattr(c1,'y','您访问的属性不存在')) print(setattr(c1,'y',0)) print(getattr(c1,'y','您访问的属性不存在')) print(delattr(c1,'y')) print(getattr(c1,'y','您访问的属性不存在'))
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
您访问的属性不存在
None
0
None
您访问的属性不存在
>>>

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()) # 调用getSize()函数 . print(c1.x) c1.x=18 print(c1.size) # 调用 size 属性 . print(c1.getSize()) del c1.x print(c1.size)
 =============== RESTART: C:/Users/Administrator/Desktop/new.py ===============
10
10
18
18
Traceback (most recent call last):
File "C:/Users/Administrator/Desktop/new.py", line 30, in <module>
print(c1.size)
AttributeError: 'C' object has no attribute 'size'
>>>
上一篇:whereis、which、find的区别


下一篇:(太强大了) - Linux 性能监控、测试、优化工具