天天看點

Python學習:一些相關的内置函數(BIF)

文章目錄

    • 一、issubclass(class,classinfo)
    • 二、isinstance(object,classinfo)
    • 三、hasattr(object,name)
    • 四、getattr(object,name[,default])
    • 五、setattr(object,name,value)
    • 六、delattr(object,name)
    • 七、property(fget=None,fset=None,fdel=None,doc=None)

一、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)
           

二、isinstance(object,classinfo)

如果第一個參數(object)是第二個參數(classinfo)的執行個體對象,則傳回TRUE,否則傳回FALSE

(1)如果object是classinfo的子類的一個執行個體,也符合條件

(2)classinfo可以是類對象組成的元組,隻要object是其中一個候選對象的執行個體,則傳回TRUE

b = B()
isinstance(b,B)
isinstance(b,A)
           

三、hasattr(object,name)

hasattr( ):測試一個對象是否有指定的屬性

第一個參數(object)是對象,第二個參數(name)是屬性名

class C:
    def __init__(self, x=0):
        self.x = x
c = C()
# 屬性名要用引号括起來
hasattr(c, 'x')
           

四、getattr(object,name[,default])

用于傳回對象指定的屬性值,如果指定的屬性不存在,則傳回default,若沒有則抛出ArttributeError

五、setattr(object,name,value)

如果指定的屬性不存在,則建立屬性并指派

六、delattr(object,name)

删除對象中指定的屬性,如果屬性不存在,則抛出AttributeError異常

七、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屬性,沒有任何影響