我定义了一个类,并在该类中创建了一些方法。在其中一个方法中我希望调用另一种方法。我无法通过将“self”放入参数来调用该方法的原因是什么?例如,method2(self)。
最佳答案
有些语言允许您编写 method2()
作为(Python 中的)self.method2()
的简写,但您不能Python。 Python 不会将函数 内的 self
参数视为特殊参数(调用 super()
时除外)。
在 Python 中,method2(self)
首先在当前作用域中查找 method2
。看起来它应该在范围内,但实际上并不是因为 Python 奇怪的范围规则。任何 class
作用域中的任何内容在嵌套作用域中都不可见:
x = 1
class A:
x = 2
print(x) # prints 2
def method(self):
print(x) # prints 1
class B:
print(x) # prints 1
即使method2
在范围内,直接调用它也会调用当前定义的类中的方法,而不是适合self
动态类型的重写方法。要调用它,您必须编写 self.method2()
。
关于python - 在类中的函数调用中传入 "self"作为参数 (Python),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69937416/