python - 在类中的函数调用中传入 "self"作为参数 (Python)

标签 python class

我定义了一个类,并在该类中创建了一些方法。在其中一个方法中我希望调用另一种方法。我无法通过将“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/

相关文章:

Python - 将数据拆分为 n 个分层部分

python - 为什么我不能导入 load_dotenv?

php - 如何使用vkapi库PHP

class - 'self' 在 super.init 调用之前使用

c++ - 创建类数组

python - 使用python动态浏览(Mechanize、Beautifulsoup...)

python - 如何通过 python-gsmmodem 接收短信

c# - 如何在项目中使用 C# 类库?

c++ - C++ 中的不可变类

python - 如何使用 pydicom 访问 DICOMDIR 文件中的单个 NumPy 数组?