一 issubclass
class 是否为classinfo的子类
语法:
issubclass(class,classinfo)
>>> 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
>>>
二 isinstance
实例对象object,是否为classinfo类的实例
语法:
isinstance(object,classinfo)
>>> b1 = B()
>>> isinstance(b1,B)
True
>>> isinstance(b1,A)
True
>>> isinstance(b1,C)
False
>>> isinstance(b1,(A,B,C))
True
三 hasattr、getattr、setattr、delattr
3.1 hasattr
对象object是否有指定的name属性,name为字符串类型
语法:
hasattr(object,name)
attr = attribute 属性
>>> class D:
def __init__(self,x=0):
self.x = x
>>> d1 = D()
>>> hasattr(d1,'x')
True
>>> hasattr(d1,x)
Traceback (most recent call last):
File "<pyshell#27>", line 1, in <module>
hasattr(d1,x)
NameError: name 'x' is not defined
3.2 getattr
对象object指定的name属性的值,name为字符串类型
语法:
getattr(object,name[,default])
>>> getattr(d1,'x')
0
>>> getattr(d1,'y')
Traceback (most recent call last):
File "<pyshell#29>", line 1, in <module>
getattr(d1,'y')
AttributeError: 'D' object has no attribute 'y'
>>> getattr(d1,'y','你所访问的属性不存在')
'你所访问的属性不存在'
3.3 setattr
设置object对象name属性的值,name为字符串类型
语法:
setattr(object,name,value)
>>> setattr(d1,'y','20')
>>> getattr(d1,'y')
'20'
3.4 delattr
删除对象中指定的属性
语法:
delattr(object,name)
>>> delattr(d1,'y')
>>> getattr(d1,'y')
Traceback (most recent call last):
File "<pyshell#34>", line 1, in <module>
getattr(d1,'y')
AttributeError: 'D' object has no attribute 'y'