Python类中调用方法时将self作为参数传入的相关疑问
类内实例方法调用错误原因说明
你这种写法无法生效有两个核心原因:
- 实例方法是类的属性,不属于当前方法的局部作用域也不属于全局作用域,直接写
method2(self)会触发NameError,解释器找不到这个名称对应的可调用对象。 - 就算你能正确找到方法,手动给实例方法传
self也是多余的:当你通过实例(也就是self本身)访问方法时,Python解释器会自动把当前实例作为第一个参数注入到方法中,手动传参会导致参数数量不匹配的报错。
错误写法示例
class TestClass: def method1(self): # 错误1:直接调用找不到method2,报NameError method2(self) # 错误2:手动传入self,报TypeError(method2只接收1个位置参数,但给了2个) self.method2(self) def method2(self): print("执行成功")
正确写法
直接通过self访问目标方法即可,不需要手动传参:
class TestClass: def method1(self): # 正确写法,解释器自动将self作为第一个参数传入method2 self.method2() def method2(self): print("执行成功")
如果是通过类名访问方法,则需要手动传入实例参数,这种写法也可以正常运行:
class TestClass: def method1(self): TestClass.method2(self) def method2(self): print("执行成功")
内容的提问来源于stack exchange,提问作者ten1o
相关产品推荐
相关产品推荐

