零基础入门学习Python(20):对象(5)类和对象的内置函数

来源:互联网 发布:js视频进度条 编辑:程序博客网 时间:2024/05/16 19:00

零基础入门学习Python(20):对象(5)类和对象的内置函数

作为对象的最后一节内容,下面通过举例介绍一下类和对象的一些相关的内置函数(BIF)。

1、issubclass(class, classinfo):判断class是不是classinfo的子类

1)一个类被认为是其自身的子类,object是所有类的基类;

2)classinfo可以是类对象组成的元组,只要class是其中一个候选类的子类,则返回True,其他情况抛出TypeError异常。

>>> 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异常。

>>> 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是类组成的元组中的任意一个类的实例对象,函数都返回TrueTrue

3、hasattr(object,name):测试一个对象里面是否有指定的属性,其中,object是对象,name是用表示字符串的引号引起来的属性名。

>>> c1 = C()>>> hasattr(c1,'x')          #上面定义的类C中没有定义任何属性,所以其对象c1中没有属性xFalse>>> class C:                 #重新定义C,则其拥有属性x        x = 2>>> c1 = C()>>> hasattr(c1,'x')True

4、getattr(object, name[,default]):获得类或对象的属性

>>> 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):设置类或对象的属性

>>> 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):删除类或对象的属性

>>> 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):设置属性的属性

>>> 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.size10>>> del a1.x                 #删除x属性之后,size属性也被删除了>>> a1.sizeTraceback (most recent call last):  File "<pyshell#65>", line 1, in <module>    a1.sizeAttributeError: 'A' object has no attribute 'size'

零基础入门学习Python(19):对象(4)组合、绑定

2 0