一些相关的BIF
issubclass(class, classinfo) 如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回True,否则返回False
1 >>> class A: 2 pass 3 4 >>> class B(A): 5 pass 6 7 >>> issubclass(B,A) 8 True 9 >>> issubclass(B,B) #一个类被认为是其自身的子类 10 True 11 >>> issubclass(B,object) # object是所有类的基类 12 True 13 >>> class C: 14 pass 15 16 >>> issubclass(B,C) 17 False
isinstance(object, classinfo) 如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回True,否则返回False
1 >>> issubclass(B,C) 注:第一个参数如果不是对象,则永远返回False 2 False 3 >>> b1 = B() 4 >>> isinstance(b1,B) 5 True 6 >>> isinstance(b1,C) 7 False 8 >>> isinstance(b1,A) 9 True 10 >>> isinstance(b1,(A,B,C)) 11 True
hasattr(object, name) 用来测试一个对象里是否有指定的属性,第一个参数(object)是对象,第二个参数(name)是属性名(属性的字符串名字)
1 >>> class C: 2 def __init__(self,x=0): 3 self.x = x 4 5 6 >>> c1 = C() 7 >>> hasattr(c1,'x') #注意,属性名要用引号括起来 8 True
getattr(object, name[, default]) 返回对象指定的属性值,如果指定的属性不存在,则返回default(可选参数);若没有设置default参数,则抛出异常
1 >>> getattr(c1,'x') 2 0 3 >>> getattr(c1,'y') 4 Traceback (most recent call last): 5 File "<pyshell#25>", line 1, in <module> 6 getattr(c1,'y') 7 AttributeError: 'C' object has no attribute 'y'
setattr(object, name, value) 可以设置对象中指定属性的值,如果指定的属性不存在,则会新建属性并赋值
1 >>> setattr(c1,'y','FishC') 2 >>> getattr(c1,'y') 3 'FishC'
delattr(object, name) 用于删除对象中指定的属性,如果属性不存在,抛出异常。
1 >>> delattr(c1,'y') 2 >>> delattr(c1,'Z') 3 Traceback (most recent call last): 4 File "<pyshell#30>", line 1, in <module> 5 delattr(c1,'Z') 6 AttributeError: Z
property(fget=None, fset=None, fdel=None, doc=None) 用来通过属性设置属性,第一个参数是获取属性的方法名,第二个参数是设置属性的方法名,第三个参数是删除属性的方法名
1 >>> class C: 2 def __init__(self,size =10): 3 self.size = size 4 def getSize(self): 5 return self.size 6 def setSize(self,value): 7 self.size = value 8 def delSize(self): 9 del self.size 10 x=property(getSize,setSize,delSize) 11 12 13 14 >>> c = C() 15 >>> c.x #调用getSize() 16 10 17 >>> c.x = 12 #调用SetSize() 18 >>> c.x 19 12 20 >>> c.size 21 12 22 >>> del c.x #调用DelSize() 23 >>> c.size 24 Traceback (most recent call last): 25 File "<pyshell#53>", line 1, in <module> 26 c.size 27 AttributeError: 'C' object has no attribute 'size'
标签:size,Python,self,object,BIF,c1,040,True,属性 From: https://www.cnblogs.com/ybqjymy/p/17650598.html