欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

python解決Missing 1 required positional argument報(bào)錯(cuò)問題

 更新時(shí)間:2023年12月27日 10:52:25   作者:暗潮洶涌  
這篇文章主要介紹了python解決Missing 1 required positional argument報(bào)錯(cuò)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(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)文章

最新評(píng)論