一、方法參數
類方法:名列前茅個參數必須是類本身,通常以cls
命名,如 @classmethod def func(cls, ...)
.靜態方法:沒有特殊參數要求,如 @staticmethod def func(...)
。二、調用方式
類方法:可以通過類或實例調用。靜態方法:同樣可以通過類或實例調用,但與類或實例無關。三、訪問級別
類方法:可以訪問和修改類屬性。靜態方法:不能訪問或修改類屬性或實例屬性。四、繼承行為
類方法:可以被子類覆蓋,子類調用會傳入子類對象。靜態方法:不考慮繼承,不管是通過父類還是子類調用,始終執行的是定義在原類中的方法。常見問答
1.我應該在什么時候使用類方法或靜態方法?類方法通常用于工廠方法或需要訪問類屬性的方法。靜態方法通常用于與類和實例無關的功能實現。2.靜態方法和普通函數有什么區別?靜態方法與普通函數相似,但它在類的定義中,并且表示與類有邏輯關系的操作,但不需要訪問類或實例屬性。3.類方法是否可以訪問實例屬性?類方法不能直接訪問實例屬性,因為它沒有實例對象的引用。4.如何在類方法中訪問實例屬性?雖然不常見,但可以通過創建類的實例并傳遞給類方法,以便訪問實例屬性。5.子類是否可以修改父類的靜態方法?靜態方法不能在子類中被覆蓋或修改。子類和父類的靜態方法相互獨立。