一、判断类、子类、对象关系的BIF
1. issubclass(class, classinfo) 返回布尔型
classinfo可以是类对象组成的元组,只要class与其中任何一个候选类的子类一致,就返回True
>>> class A:
pass
>>> class B(A):
pass
>>> issubclass(B,A)
True
>>> issubclass(B,B)
True
>>> issubclass(B, object)
True
>>> class C:
pass
>>> issubclass(B, C)
False
>>>
2.isinstance(object, classinfo)
classinfo可以是类对象组成的元组,只要object是其中任何一个候选类的对象,就返回True
>>> issubclass(B, C)
False
>>> b = B()
>>> isinstance(b , B)
True
>>> isinstance(b , A)
True
>>>
若B是A的子类,则B的实例化对象b也是A的实例化对象
二、属性相关的BIF
3.hasattr(object, name) 查看实例化对象是否具有某属性,name必须为字符串
>>> class C:
def __init__(self, x=0):
self.x = x
>>> c = C()
>>> hasattr(c, 'x')
True
>>>
4.getattr(object, name[, default])
>>> getattr(c, 'x')
0
>>> getattr(c,'y', '您所访问的属性不存在' )
'您所访问的属性不存在'
>>>
5.setattr(object, name, value)
>>> setattr(c, 'y', '1234')
>>> getattr(c, 'y')
'1234'
>>>
6.delattr(object, name)
>>> delattr(c, 'u')
>>> delattr(c, 'u')
Traceback (most recent call last):
File "<pyshell#38>", line 1, in <module>
delattr(c, 'u')
AttributeError: u
7. property(fget = None, fset = None, fdel = None)
>>> 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)
>>> c = C()
>>> c.x
10
>>> c.x = 18
>>> c.x
18
>>> del c.x
>>>
需要在类中定义读取属性的方法fget, 设置属性的方法fset,删除属性的方法fdel,将属性归于property并传给x,将x提供给用户调用,当类中方法名需要更改时,用户调用属性无需改变,c.x即可调用属性。