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