一、方法參數(shù)
類(lèi)方法:名列前茅個(gè)參數(shù)必須是類(lèi)本身,通常以cls
命名,如 @classmethod def func(cls, ...)
.靜態(tài)方法:沒(méi)有特殊參數(shù)要求,如 @staticmethod def func(...)
。二、調(diào)用方式
類(lèi)方法:可以通過(guò)類(lèi)或?qū)嵗{(diào)用。靜態(tài)方法:同樣可以通過(guò)類(lèi)或?qū)嵗{(diào)用,但與類(lèi)或?qū)嵗裏o(wú)關(guān)。三、訪(fǎng)問(wèn)級(jí)別
類(lèi)方法:可以訪(fǎng)問(wèn)和修改類(lèi)屬性。靜態(tài)方法:不能訪(fǎng)問(wèn)或修改類(lèi)屬性或?qū)嵗龑傩浴?p style="text-indent: 2em;">四、繼承行為類(lèi)方法:可以被子類(lèi)覆蓋,子類(lèi)調(diào)用會(huì)傳入子類(lèi)對(duì)象。靜態(tài)方法:不考慮繼承,不管是通過(guò)父類(lèi)還是子類(lèi)調(diào)用,始終執(zhí)行的是定義在原類(lèi)中的方法。常見(jiàn)問(wèn)答
1.我應(yīng)該在什么時(shí)候使用類(lèi)方法或靜態(tài)方法?類(lèi)方法通常用于工廠方法或需要訪(fǎng)問(wèn)類(lèi)屬性的方法。靜態(tài)方法通常用于與類(lèi)和實(shí)例無(wú)關(guān)的功能實(shí)現(xiàn)。2.靜態(tài)方法和普通函數(shù)有什么區(qū)別?靜態(tài)方法與普通函數(shù)相似,但它在類(lèi)的定義中,并且表示與類(lèi)有邏輯關(guān)系的操作,但不需要訪(fǎng)問(wèn)類(lèi)或?qū)嵗龑傩浴?strong>3.類(lèi)方法是否可以訪(fǎng)問(wèn)實(shí)例屬性?類(lèi)方法不能直接訪(fǎng)問(wèn)實(shí)例屬性,因?yàn)樗鼪](méi)有實(shí)例對(duì)象的引用。4.如何在類(lèi)方法中訪(fǎng)問(wèn)實(shí)例屬性?雖然不常見(jiàn),但可以通過(guò)創(chuàng)建類(lèi)的實(shí)例并傳遞給類(lèi)方法,以便訪(fǎng)問(wèn)實(shí)例屬性。5.子類(lèi)是否可以修改父類(lèi)的靜態(tài)方法?靜態(tài)方法不能在子類(lèi)中被覆蓋或修改。子類(lèi)和父類(lèi)的靜態(tài)方法相互獨(dú)立。