版权声明:转载请注明出处 https://blog.csdn.net/nanhuaibeian/article/details/86627640
1. issubclass(class,classinfo)
如果第一个参数(class)是第二个参数(classinfo)的一个子类,则返回TRUE,否则返回FALSE
(1)一个类被认为是其自身的子类
(2)classinfo可以是类对象组成的元组,只要class是其中一个候选类的子类,则返回TRUE
(3)其他情况会抛出TypeError
class A:
pass
class B(A):
pass
class C:
pass
issubclass(B,A)
issubclass(B,B)
2.isinstance(object,classinfo)
如果第一个参数(object)是第二个参数(classinfo)的实例对象,则返回TRUE,否则返回FALSE
(1)如果object是classinfo的子类的一个实例,也符合条件
(2)classinfo可以是类对象组成的元组,只要object是其中一个候选对象的实例,则返回TRUE
b = B()
isinstance(b,B)
isinstance(b,A)
3.hasattr(object,name)
hasattr():测试一个对象是否有指定的属性
第一个参数(object)是对象,第二个参数(name)是属性名
class C:
def __init__(self, x=0):
self.x = x
c = C()
# 属性名要用引号括起来
hasattr(c, 'x')
4.getattr(object,name[,default])
用于返回对象指定的属性值,如果指定的属性不存在,则返回default,若没有则抛出ArttributeError
getattr(c,'x')
5.setattr(object,name,value)
如果指定的属性不存在,则新建属性并赋值
setattr(c,'c','love')
6.delattr(object,name)
删除对象中指定的属性,如果属性不存在,则抛出AttributeError异常
delattr(c,'c')
7.property(fget=None,fset=None,fdel=None,doc=None)
property()返回一个可以设置属性的属性
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)
在这个例子中setSize方法名设置size属性,getSize方法名获取属性,delSzie方法名删除属性
当需要对程序大改时,由于只为用户访问size属性提供了x属性,所以无论内部怎么改动,只需要修改相应的property()的参数,用户任然只需要去操作x属性,没有任何影响。