1. 程式人生 > >Python基礎19_函式和方法的區分,反射

Python基礎19_函式和方法的區分,反射

 一. isinstance, type, issubtance
    1. isinstance(obj, cls)
    判斷obj是否是cls類的物件
    2. type(obj)
    返回obj的精準的資料型別
    3. issubclass(sub, super)
    判斷sub類是否是super類的派生類
二. 區分函式和方法
    1. 通過列印名字
    如果列印結果中有function, 就是函式
    如果列印結果中有method, 就是方法
    這種方法有缺點, 如果是類中的方法就不怎麼管用了
    例項方法: 通過 物件.例項方法 呼叫, 結果是method, 通過 類名.例項方法 呼叫, 結果是function
    類方法: 不管是通過類名呼叫還是通過物件呼叫, 結果都是方法. 類也是物件, 屬性是類變數, 方法是類方法
    靜態方法: 不管是通過類名呼叫還是通過物件呼叫, 結果都是函式
    2. 通過藉助模組 from types import Functiontype, Methodtype
    所有的方法都是Methodtype的例項
    所有的函式都是Functiontype的例項
    isinstance(obj.方法名, Functinontype或Methodtype)    返回True或False
三. 反射
    hasattr(obj, name)    判斷obj中是否包含name成員
    getattr(obj, name)    從obj中獲取name成員
    setattr(obj, name, value)    把obj中的name成員設定成value, 注意, 這裡的value可以是值, 也可以是函式或者方法
    delattr(obj, name)    把obj中的name成員刪除