|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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'
复制代码
|
评分
-
查看全部评分
|