實例方法,必須要創建實例才能調用,里面有self關鍵字,有初始化函數必須對初始化函數進行傳參。
類方法,可以直接類名.方法名直接調用,也可以創建實例調用。里面有cls關鍵字,調用時,直接類名.方法名,可以繞過實例方法的初始化函數,類方法不能訪問實例屬性。
靜態方法,可以直接類名.方法名直接調用,也可以創建實例調用。沒有關鍵字,就像調用函數一樣方便,調用時,直接類名.方法名,可以繞過實例方法的初始化函數,靜態方法不能訪問實例屬性。
下圖3種方法:
看下圖類方法和靜態方法,沒有創建實例去調用:
由上圖調用結果可以知道,類方法和靜態方法,都是通過類名.方法名的方式調用,不需要創建對象,也不需要對初始化函數進行傳參。而實例方法,必須要創建實例對象才能調用,如果方法里面有初始化函數也必須對初始化函數進行傳參。
看下圖類方法和靜態方法,創建實例后去調用:
代碼如下:
import requests class HttpRequest(): def __init__(self,url,data): self.url = url self.data = data # todo 實例方法 def send_post(self,url,data): # todo 實例方法,只能通過實例來調用 res = requests.post(url,data) print(res.status_code) @classmethod def add(cls,x,y): print('我是類方法') return x+y @staticmethod def print_msg(): print('我是靜態方法') if __name__ == '__main__': # todo 類方法和靜態方法可以直接類名.方法名直接調用,可以繞過實例方法的初始化函數 print(HttpRequest.add(7,8)) HttpRequest.print_msg() url = 'https://www.ketangpai.com/UserApi/login' data = { "email": "1489088761@qq.com", "password": "A1234568","remember": 0 } HttpRequest(url,data).send_post(url,data)