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)
    1番目のパラメータ(class)が2番目のパラメータ(classinfo)のサブクラスである場合、TRUEに戻り、そうでなければFALSE(1)1つのクラスが自身のサブクラスとみなされる(2)classinfoはクラスオブジェクトからなるメタグループであり、classが1つの候補クラスのサブクラスである限り、TRUE(3)に戻る他の場合、TypeErrorが投げ出される
    class A:
        pass
    class B(A):
        pass
    class C:
        pass
    issubclass(B,A)
    issubclass(B,B)
    

    二、isinstance(object,classinfo)
    1番目のパラメータ(object)が2番目のパラメータ(classinfo)のインスタンスオブジェクトである場合、TRUEに戻り、そうでなければFALSE(1)objectがclassinfoのサブクラスの1つのインスタンスである場合、条件(2)classinfoがクラスオブジェクトからなるメタグループであり、objectが候補オブジェクトの1つである場合、TRUEに戻る
    b = B()
    isinstance(b,B)
    isinstance(b,A)
    

    三、hasattr(object,name)
    hasattr():オブジェクトに指定された属性があるかどうかをテストします.最初のパラメータ(object)はオブジェクトで、2番目のパラメータ(name)は属性名です.
    class C:
        def __init__(self, x=0):
            self.x = x
    c = C()
    #           
    hasattr(c, 'x')
    

    四、getattr(object,name[,default])
    オブジェクトが指定した属性値を返します.指定した属性が存在しない場合はdefaultを返します.存在しない場合はArttributeErrorを放出します.
    getattr(c,'x')
    

    五、setattr(object,name,value)
    指定した属性が存在しない場合は、新しい属性を作成し、値を割り当てます.
    setattr(c,'c','love')
    

    六、delattr(object,name)
    オブジェクトで指定した属性を削除し、属性が存在しない場合はAttributeError例外を放出します.
    delattr(c,'c')
    

    七、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属性を操作するだけで、何の影響もありません.