零基础入门学习Python(20):对象(5)类和对象的内置函数
2015-12-25 17:02
866 查看
零基础入门学习Python(20):对象(5)类和对象的内置函数
作为对象的最后一节内容,下面通过举例介绍一下类和对象的一些相关的内置函数(BIF)。1、issubclass(class, classinfo):判断class是不是classinfo的子类
1)一个类被认为是其自身的子类,object是所有类的基类;
2)classinfo可以是类对象组成的元组,只要class是其中一个候选类的子类,则返回True,其他情况抛出TypeError异常。
[code]>>> 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
2、isinstance(object,classinfo ):检查一个实例对象是否属于一个类
1)如果第一个参数不是对象,则永远返回False;
2)如果第二个参数不是类或者由类对象组成的元组,则会抛出一个TypeError异常。
[code]>>> b1 = B() #创建一个B的实例对象 >>> isinstance(b1,B) True >>> isinstance(b1,A) #A是B的基类,B的对象也属于A的对象 True >>> isinstance(B,A) #第一个参数必须是对象 False >>> isinstance(b1,(A,B,C)) #只要b1是类组成的元组中的任意一个类的实例对象,函数都返回True True
3、hasattr(object,name):测试一个对象里面是否有指定的属性,其中,object是对象,name是用表示字符串的引号引起来的属性名。
[code]>>> c1 = C() >>> hasattr(c1,'x') #上面定义的类C中没有定义任何属性,所以其对象c1中没有属性x False >>> class C: #重新定义C,则其拥有属性x x = 2 >>> c1 = C() >>> hasattr(c1,'x') True
4、getattr(object, name[,default]):获得类或对象的属性
[code]>>> getattr(c1,'x') #获得对象c1的x属性 2 >>> getattr(C,'x') 2 >>> getattr(c1,'y') #获得不存在的属性时会抛出AttributeError异常 Traceback (most recent call last): File "<pyshell#34>", line 1, in <module> getattr(c1,'y') AttributeError: 'C' object has no attribute 'y' >>> getattr(c1,'y','NoExist') #第三个参数可以用来设置出错时要显示的内容 'NoExist'
5、setattr(object, name, value):设置类或对象的属性
[code]>>> setattr(c1,'y',7) #设置对象的一个y属性值为7 >>> getattr(c1,'y','NoExist') 7 >>> setattr(C,'z',1) #设置类C的一个z属性值为1 >>> getattr(c1,'z','NoExist')#此时可以通过对象c1获得类C设置的属性值 1 >>> getattr(C,'y','NoExist') #但是通过类C不能获得其对象c1设置的属性值 'NoExist'
6、delattr(object, name):删除类或对象的属性
[code]>>> delattr(c1,'y') #删除对象c1的y属性 >>> getattr(c1,'y','NoExist') 'NoExist' >>> delattr(c1,'z') #不能通过对象删除其类中定义的属性 Traceback (most recent call last): File "<pyshell#44>", line 1, in <module> delattr(c1,'z') AttributeError: z
7、property(fget = None, fset = None, fdel = None, doc = None):设置属性的属性
[code]>>> class A: def __init__(self, size = 7): 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) >>> a1 = A() >>> a1.getSize() 7 >>> a1.x #通过访问对象的x属性也可以得到size属性的值 7 >>> a1.x = 10 #通过x修改属性size >>> a1.size 10 >>> del a1.x #删除x属性之后,size属性也被删除了 >>> a1.size Traceback (most recent call last): File "<pyshell#65>", line 1, in <module> a1.size AttributeError: 'A' object has no attribute 'size'
零基础入门学习Python(19):对象(4)组合、绑定
相关文章推荐
- Python @classmethod&@staticmethod 区别
- python Json
- splinter webdriver API 的基本实现
- 通过Python调用OpenStack 的RESTful API
- 下载Python库win32com的地址
- python time模块
- python知识收集
- python 序列化
- 笨方法学Python(1-5)
- python入门之数据类型
- Python -- 两个列表的差集、并集和交集
- python知识-本地获取数据
- python version 2.7 required,which was not found in the registry
- 一段代码让你学会Python (借鉴)
- 2016马哥教育--Python3.0实战培训班重磅来袭
- Python标准库01 正则表达式 (re包)
- Python操作MySQL数据库
- python面试题
- 找零钱之美分 python
- Python的groupby