python解決Missing 1 required positional argument報錯問題
1. 報錯描述
2. 報錯原因
從報錯代碼能夠看出,我這里涉及了兩個類,我用A類和B類來進(jìn)行描述。
A類:一個方法類,其中報錯的 get_element() 就是這個類下的一個方法。在該類我沒有實例化
B類:在 get_element() 中調(diào)用了A的 get_element() 方法。只在開頭 from A import A.
因為A類沒有實例化,B類我也沒有進(jìn)行實例化,只是直接引入了這個類。所以我最后的調(diào)用其實是 A類直接調(diào)用類方法 get_element() 。所以就報錯了。
3. 解決方案
有兩種解決方案:
3.1 實例化
在A類中我們實例化,例如 :a = A()
.
然后在B類引入A類的實例化對象而非A這個類。例:from A import a
如果要調(diào)用A類的方法,調(diào)用方式如下:a.get_element(傳參)
3.2 加上修飾符 @classmethod
該修飾符的作用:
1、@classmethod聲明一個類方法,而對于平常我們見到的則叫做實例方法。
2、類方法的第一個參數(shù)cls(class的縮寫,指這個類本身),而實例方法的第一個參數(shù)是self,表示該類的一個實例
3、可以通過類來調(diào)用,就像C.f(),相當(dāng)于java中的靜態(tài)方法’’’
例:
class A(object): # 屬性默認(rèn)為類屬性(可以給直接被類本身調(diào)用) num = "類屬性" # 實例化方法(必須實例化類之后才能被調(diào)用) def func1(self): # self : 表示實例化類后的地址id print("func1") print(self) # 類方法(不需要實例化類就可以被類本身調(diào)用) @classmethod def func2(cls): # cls : 表示沒用被實例化的類本身 print("func2") print(cls) print(cls.num) cls().func1() # 不傳遞傳遞默認(rèn)self參數(shù)的方法(該方法也是可以直接被類調(diào)用的,但是這樣做不標(biāo)準(zhǔn)) def func3(): print("func3") print(A.num) # 屬性是可以直接用類本身調(diào)用的 # A.func1() 這樣調(diào)用是會報錯:因為func1()調(diào)用時需要默認(rèn)傳遞實例化類后的地址id參數(shù),如果不實例化類是無法調(diào)用的 A.func2() A.func3()
那么對于我這個例子,直接在A類要被調(diào)用的方法 get_element() 前加上修飾符 @classmethod :
代碼就能夠成功運行了。
總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
基于Python輕松實現(xiàn)PDF轉(zhuǎn)圖片
PDF文件是我們在日常工作和學(xué)習(xí)中常用的文檔格式之一,但你知道嗎,你可以將PDF文件轉(zhuǎn)換為圖像,讓文檔變得更加生動有趣,下面我們就來看看具體的實現(xiàn)方法吧2023-08-08Python max內(nèi)置函數(shù)詳細(xì)介紹
這篇文章主要介紹了Python MAX內(nèi)置函數(shù)詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-11-11利用Python連接Oracle數(shù)據(jù)庫的基本操作指南
由于之前的在職的公司沒有機(jī)會接觸到Oralce數(shù)據(jù)庫,所以就沒有用python連接過Oralce,之前大多集中在連接mysql和sql server,最近在做一下web自動化的工作,所以簡單的記錄一下,下面這篇文章主要給大家介紹了關(guān)于利用Python連接Oracle數(shù)據(jù)庫的基本操作,需要的朋友可以參考下2022-06-06Python中的錯誤和異常處理簡單操作示例【try-except用法】
這篇文章主要介紹了Python中的錯誤和異常處理簡單操作,結(jié)合實例形式分析了Python中try except在錯誤與異常處理中的用法,需要的朋友可以參考下2017-07-07