python解決Missing 1 required positional argument報錯問題
1. 報錯描述

2. 報錯原因
從報錯代碼能夠看出,我這里涉及了兩個類,我用A類和B類來進(jìn)行描述。
A類:一個方法類,其中報錯的 get_element() 就是這個類下的一個方法。在該類我沒有實(shí)例化
B類:在 get_element() 中調(diào)用了A的 get_element() 方法。只在開頭 from A import A.
因?yàn)锳類沒有實(shí)例化,B類我也沒有進(jìn)行實(shí)例化,只是直接引入了這個類。所以我最后的調(diào)用其實(shí)是 A類直接調(diào)用類方法 get_element() 。所以就報錯了。
3. 解決方案
有兩種解決方案:
3.1 實(shí)例化
在A類中我們實(shí)例化,例如 :a = A().
然后在B類引入A類的實(shí)例化對象而非A這個類。例:from A import a
如果要調(diào)用A類的方法,調(diào)用方式如下:a.get_element(傳參)
3.2 加上修飾符 @classmethod
該修飾符的作用:
1、@classmethod聲明一個類方法,而對于平常我們見到的則叫做實(shí)例方法。
2、類方法的第一個參數(shù)cls(class的縮寫,指這個類本身),而實(shí)例方法的第一個參數(shù)是self,表示該類的一個實(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)用是會報錯:因?yàn)閒unc1()調(diào)用時需要默認(rèn)傳遞實(shí)例化類后的地址id參數(shù),如果不實(shí)例化類是無法調(diào)用的
A.func2()
A.func3()
那么對于我這個例子,直接在A類要被調(diào)用的方法 get_element() 前加上修飾符 @classmethod :

代碼就能夠成功運(yùn)行了。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python try except finally資源回收的實(shí)現(xiàn)
這篇文章主要介紹了Python try except finally資源回收的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2021-01-01
python 內(nèi)置函數(shù)-range()+zip()+sorted()+map()+reduce()+filte
這篇文章主要介紹了python 內(nèi)置函數(shù)-range()+zip()+sorted()+map()+reduce()+filter(),想具體了解函數(shù)具體用法的小伙伴可以參考一下下面的介紹,希望對你有所幫助2021-12-12
在Python的Django框架中獲取單個對象數(shù)據(jù)的簡單方法
這篇文章主要介紹了在Python的Django框架中獲取單個對象數(shù)據(jù)的簡單方法,Django為數(shù)據(jù)的操作提供了諸多方便的功能,需要的朋友可以參考下2015-07-07
linux環(huán)境打包python工程為可執(zhí)行程序的過程
本次需求,在ubuntu上面開發(fā)的python代碼程序需要打包成一個可執(zhí)行程序然后交付給甲方,因?yàn)椴荒苤苯咏o源碼給甲方,所以尋找方法將python開發(fā)的源碼打包成一個可執(zhí)行程序,本次在ubuntu上打包python源碼的方法和在window上打包的有點(diǎn)類似,感興趣的朋友跟隨小編一起看看吧2024-01-01
使用Python的Treq on Twisted來進(jìn)行HTTP壓力測試
這篇文章主要介紹了使用Python的Treq on Twisted來進(jìn)行HTTP壓力測試,基于Python中的Twisted框架,需要的朋友可以參考下2015-04-04
基于Python實(shí)現(xiàn)層次性數(shù)據(jù)和閉包性質(zhì)
這篇文章主要介紹了如何利用Python實(shí)現(xiàn)層次性數(shù)據(jù)和閉包性質(zhì),文中的示例代碼講解詳細(xì),對我們學(xué)習(xí)Python有一定幫助,需要的可以了解一下2022-05-05

