16 一些相关的内置函数(BIF)

版权声明:转载请注明出处 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属性,没有任何影响。

猜你喜欢

转载自blog.csdn.net/nanhuaibeian/article/details/86627640