首页 > 其他 > 详细

040类和对象:一些相关的BIF

时间:2015-10-17 00:30:34      阅读:312      评论:0      收藏:0      [点我收藏+]

1. issubclass(class,classinfo)
  功能: 如果class是classinfo的一个子类就返回True
  注意:一个类被认为是其自身的子类
      classinfo可以是类对象组成的元组,只要class是其中任何一个候选类的子类,则返回True
      其他情况会抛出一个TypeError异常
  如:>>> class A:
     ...     pass
     ...
     >>> class B(A):
     ...     pass
     ...
     >>> class C:
     ...     pass
     ...
     >>> issubclass(B,A)
     True
     >>> issubclass(B,B)
     True
     >>> issubclass(B,C)
     False

2. isinstance(object,classinfo)
   功能:检查一个实例对象object是否是一个类classinfo的实例对象
   注意:如果第一个参数不是对象,则永远返回False
        如果第一个参数不是类或者由类对象组成的元组会抛出一个TypeError异常
   如:利用上面的类
      >>> b1 = B()
      >>> isinstance(b1,B)
      True
      >>> isinstance(b1,A)
      True
      >>> isinstance(b1,C)
      False
      >>> isinstance(b1,(A,B,C))
      True

3. hasattr(object,name)
   功能:测试一个对象是否有这个属性
   注意:属性名需要用引号引起来的
   如:>>> class C:
      ...     def __init__(self,x=0):
      ...         self.x = x
      ...
      >>> c1 = C()
      >>> hasattr(c1,‘x‘)
      Trues
      >>> hasattr(c1,x)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      NameError: name ‘x‘ is not defined

4. getattr(object,name[,default])
   功能:返回对象指定的属性值,如果没有就返回default的值,没有定义default就抛出AttributeError异常
   如:>>> getattr(c1,‘x‘)    #属性存在
      0
      >>> getattr(c1,‘y‘)    #属性不存在
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      AttributeError: C instance has no attribute ‘y‘
      >>> getattr(c1,‘y‘,‘not this attr‘)   #属性不存在,并定义了default
      ‘not this attr‘

5. setattr(boject,name,value)
   功能:设定对象中指定的属性值,若不存在就添加此属性值并赋值
   如:>>> getattr(c1,‘y‘,‘not this attr‘)
      ‘not this attr‘
       >>> setattr(c1,‘y‘,‘wang‘)
       >>> getattr(c1,‘y‘,‘not this attr‘)
       ‘wang‘

6. delattr(object,name)
   功能:删除对象中指定的属性,若不存在就抛出AttributeError异常
   如:>>> delattr(c1,‘y‘)
      >>> delattr(c1,‘y‘)
      Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      AttributeError: C instance has no attribute ‘y‘

7. property(fget=None,fset=None,fdel=None,doc=None)
   功能:用属性定义属性。
        fget:获得属性的方法
        fset:设置属性的方法
        fdel:删除属性的方法
   如:>>> 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()    #原来的方法获取size属性
      10
      >>> c1.x            #用x属性修改size属性
      10
      >>> c1.x = 18       #修改x属性
      >>> c1.x
      18
      >>> c1.size         #size属性也改变了
      18
      >>> c1.getSize()
      18

040类和对象:一些相关的BIF

原文:http://www.cnblogs.com/wangjiaxing/p/4886679.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!