issubclass(class, classinfo)
如果第一个参数(class)时第二个参数(classinfo)的一个子类,则返回True,否则返回False
(1)一个类被认为是其自身的子类。
(2)classinfo可以是类对象组成的元组,只要class是其中一个候选类的子类,则返回True。
(3)在其他情况下,会抛出一个TypeError异常。
isinstance(object, classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回True,否则返回False
(1)如果object是classinfo的子类的一个实例,也符合条件。
(2)如果第一个参数不是对象,则永远返回False。
(3)classinfo可以是类对象组成的元组,只要object是其中任何一个候选类的实例对象,则返回True。
(4)如果第二个参数不是类或者由类对象组成的元组,会抛出一个TypeError异常。
hasattr(object, name)
attr即attribute的缩写,属性的意思。下面的几个BIF都是跟对象的属性有关系的,例如这个hasattr()的作用就是测试一个对象里是否有指定的属性。
第一个参数(object)是对象,第二个参数(name)是属性名(字符串形式):
setattr(object, name, value)
与getattr()对应,setattr()可以设置对象中指定属性的值,如果指定的属性不存在,则会新建属性并赋值。
delattr(object, name)
与setattr()相反,delattr()用于删除对象中指定属性的值,如果属性不存在,则抛出AttributeError异常。
property(fget = None, fset = None, fdel = None, doc = None)
property的作用是通过属性来设置属性,具体还是看操作吧
property()返回一个可以设置属性的属性,当然如何设置属性的方法还是需要自己来写代码。在类中定义好设置属性的方法,然后使用property将这些方法汇总并返回一个属性,用实例对象调用这个属性就可以就可以对方法所控制的属性进行各种操作,那上面的例子来说,首先在类中定义了size属性,然后定义了各种设置size属性的方法,最后使用property()将这些方法汇总并返回一个x属性,使用实例对象调用x属性就可以完成对size属性的各种操作,在实际中有什么用呢,如果你有一天需要对程序进行修改,就可能需要把getSize与setSize方法名修改为getXSize与setXSize,因为是下一个版本了嘛,这时就不得不修改用户调用接口,如果程序需要频繁修改,那这样其不是特别麻烦。
有了property(),这种问题就不需要担心了,向上面一样,为用户访问size属性只提供了x属性,无论内部怎样改动,只需要修改property()中的参数,也就是修改过后的方法名,用户仍然使用x属性去进行各种操作,没有任何影响。