类和对象的一些BIF
Posted liangliangzz
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了类和对象的一些BIF相关的知识,希望对你有一定的参考价值。
issubclass #用于判断自己的子类 issubclass(A,B) #A是不是B的子类,是返回True 否则 False 自身也属于自己的子类
isinstance(object,classinfo) #用于检查一个实例对象是否属于一个类 classinfo 可以传入一个元组 class A(object): pass class B(A): pass class C(object): pass a=A() b=B() isinstance(a,A) -->True isinstance(a,B) -->False isinstance(b,A) -->True isinstance(b,B) -->True isinstance(b,(C,B)) -->True #当传入一个元组时,只要有一个为真,返回结果都是True
hasattr(object,name) #attr=attribute:属性 用于测试一个对象里面是否有指定的属性 class D(object): def __init__(self,x=0): self.x=x d=D() hasattr(d,‘x‘)-->True #x传入的必须是一个字符串不然会输出异常 hasattr(d,x) Traceback (most recent call last): File "<input>", line 1, in <module> NameError: name ‘x‘ is not defined
getattr(object,name[,default]) #用于返回一些指定的属性值 getattr(d,‘x‘) 0 getattr(d,‘y‘) Traceback (most recent call last): File "<input>", line 1, in <module> AttributeError: ‘D‘ object has no attribute ‘y‘ getattr(d,‘y‘,‘您所访问的属性值不存在。。。‘) #default 自定义返回信息 ‘您所访问的属性值不存在。。。‘
setattr(object,name,value]) #与getattr 获取属性不存在可以指定一个新的值 setattr(d,‘y‘,‘FishC‘) getattr(d,‘y‘,‘您所访问的属性值不存在。。。‘)-->‘FishC‘
delattr(object,name) #删除属性,如果删除不存在的属性会抛出AttributeError异常
#property 的方法和使用 在之前操作里面一个类的实例化对象,当一个类被删除时候 这个实例化对象不会被删除,但用这个property 方法时候,类被删除实例化对象也会被删除 class C(object): def __init__(self,size=10): self.size=size def getsize(self): return self.size def setsize(self,value): self.size=value return self.size def delsize(self): del self.size x=property(getsize,setsize,delsize) c=C() c.x 10 c.x=18 c.x 18 c.getsize() 18 del c.x c.getsize() Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 7, in getsize AttributeError: ‘C‘ object has no attribute ‘size‘ c.x Traceback (most recent call last): File "<input>", line 1, in <module> File "<input>", line 7, in getsize AttributeError: ‘C‘ object has no attribute ‘size‘
以上是关于类和对象的一些BIF的主要内容,如果未能解决你的问题,请参考以下文章