python语法报错原因_【Python】Missing 1 required positional argument 解决方案

博客主要讲述Python代码报错问题,涉及A、B两个类,因A类和B类未实例化,直接调用类方法导致报错。给出两种解决方案,一是对A类实例化并在B类引入实例化对象;二是在A类被调用的方法前加上修饰符 @classmethod。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 报错描述

2. 报错原因

从报错代码能够看出,我这里涉及了两个类,我用A类和B类来进行描述。

A类:一个方法类,其中报错的 get_element() 就是这个类下的一个方法。在该类我没有实例化

B类:在 get_element() 中调用了A的 get_element() 方法。只在开头 from A import A.

因为A类没有实例化,B类我也没有进行实例化,只是直接引入了这个类。

所以我最后的调用其实是 A类直接调用类方法 get_element() 。所以就报错了。

3. 解决方案

有两种解决方案:

3.1 实例化

在A类中我们实例化,例如 :a = A().

然后在B类引入A类的实例化对象而非A这个类。例:from A import a

如果要调用A类的方法,调用方式如下:a.get_element(传参)

3.2 加上修饰符 @classmethod

该修饰符的作用:

[email protected],而对于平常我们见到的则叫做实例方法。

2、类方法的第一个参数cls(class的缩写,指这个类本身),而实例方法的第一个参数是self,表示该类的一个实例

3、可以通过类来调用,就像C.f(),相当于java中的静态方法’’’

例:

class A(object):

# 属性默认为类属性(可以给直接被类本身调用)

num = "类属性"

# 实例化方法(必须实例化类之后才能被调用)

def func1(self): # self : 表示实例化类后的地址id

print("func1")

print(self)

# 类方法(不需要实例化类就可以被类本身调用)

@classmethod

def func2(cls): # cls : 表示没用被实例化的类本身

print("func2")

print(cls)

print(cls.num)

cls().func1()

# 不传递传递默认self参数的方法(该方法也是可以直接被类调用的,但是这样做不标准)

def func3():

print("func3")

print(A.num) # 属性是可以直接用类本身调用的

# A.func1() 这样调用是会报错:因为func1()调用时需要默认传递实例化类后的地址id参数,如果不实例化类是无法调用的

A.func2()

A.func3()

那么对于我这个例子,直接在A类要被调用的方法 get_element() 前加上修饰符 @classmethod :

代码就能够成功运行了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值