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

零基础入门学习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是类组成的元组中的任意一个类的实例对象,函数都返回True
True

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

>>> 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]):获得类或对象的属性

>>> 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.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,函数,对象)