马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
issubclass(class,classinfo) :如果class是classinfo的子类,就返回True
这个内置函数有几点需要注意的:
1.一个类被认为是其自身的子类
2.classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True
>>> class A:
pass
>>> class B(A): # B是A的子类
pass
>>> issubclass(B,A)
True
>>> issubclass(B,B) # 自身是自身的子类
True
>>> issubclass(B,object) # object是所有类的基类
True
>>> class C:
pass
>>> issubclass(B,C)
False
>>>
isinstance(object,classinfo): 检查一个实例对象是否属于某个类的
需要注意的有:
1.如果第一个参数不是对象,则永远返回False
2.如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常
>>> issubclass(B,C)
False
>>> b1 = B()
>>> isinstance(b1,B)
True
>>> isinstance(b1,A) # 因为B类是A的子类,所以这个也符合
True
>>> isinstance(b1,C)
False
>>> isinstance(b1,(A,B,C)) # 第二个参数是元组,只要有一个符合就返回True
True
hasattr(object,name) attr = attribute:属性 测试一个对象是否有指定的属性
>>> class C:
def __init__(self,x=0):
self.x = x
>>> c1 = C()
>>> hasattr(c1,'x') # 第二个参数需加双引号
True
>>> hasattr(c1,x) # 不加的话会认为是一个变量
Traceback (most recent call last):
File "<pyshell#25>", line 1, in <module>
hasattr(c1,x)
NameError: name 'x' is not defined
getattr(object,name[,default]) : 返回对象指定的属性值,如果指定的属性不存在,如果有设置default,
那么会将default参数打印出来,否则会抛出attributeerror
>>> getattr(c1,'x')
0
>>> getattr(c1,'y') # 访问不存在的属性
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
getattr(c1,'y')
AttributeError: 'C' object has no attribute 'y'
>>> getattr(c1,'y','您所访问的属性不存在。。。') # 添加第三个参数
'您所访问的属性不存在。。。'
setattr(object,name,value) : 设置对象中指定属性的值,如果指定属性不存在,会新建一个新属性并给其赋值>>> setattr(c1,'y','FishC')
>>> getattr(c1,'y','您所访问的属性不存在。。。')
'FishC'
delattr(object,name) : 删除对象中指定的属性,如果属性不存在,则抛出AttributeError异常
>>> delattr(c1,'y') # 删掉c1对象的y属性
>>> delattr(c1,'y') # 再删就报错了
Traceback (most recent call last):
File "<pyshell#32>", line 1, in <module>
delattr(c1,'y')
AttributeError: y
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) # x是一个属性
>>> c1 = C()
>>> c1.getSize()
10
>>> c1.x
10
>>> c1.x = 18
>>> c1.x
18
>>> c1.size
18
>>> c1.getSize()
18
>>> del c1.x
>>> c1.size
Traceback (most recent call last):
File "<pyshell#55>", line 1, in <module>
c1.size
AttributeError: 'C' object has no attribute 'size'
|