调用Python类方法时出现‘missing 1 required positional argument: 'self'’错误,请问我的代码哪里出错了?
问题分析与解决方法
嘿,这个错误我刚学Python的时候也踩过坑!咱们一步步来拆解问题:
错误原因
你定义的calculation是实例方法,这类方法的第一个参数self是Python用来自动传递调用该方法的实例对象的。当你直接用Area.calculation()调用类的方法时,Python找不到要传入self的实例,自然就会抛出missing 1 required positional argument: 'self'的错误。
简单说:实例方法是给实例用的,不是给类直接用的~
两种修正方案
方案1:用创建好的实例调用方法(推荐)
你已经创建了实例area = Area(15, 2),直接用这个实例来调用calculation方法就行,Python会自动把area作为self传入:
class Area(object): def __init__(self, base, height): self.base = base self.height = height def calculation(self): return(self.base * self.height) area = Area(15, 2) print(area.calculation()) # 这里改成实例调用
运行这个代码就会输出30,完全正常。
方案2:手动传入实例给类方法(不推荐)
如果非要用类来调用这个方法,那你得手动把创建好的实例作为self参数传进去,写法是这样的:
print(Area.calculation(area))
不过这种写法不符合Python的编码习惯,除非有特殊需求,不然还是用方案1更规范。
内容的提问来源于stack exchange,提问作者The noob coder




