小编典典

为什么需要在 Python 方法中显式使用“self”参数?

all

在 Python 中为类定义方法时,它看起来像这样:

class MyClass(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

但在其他一些语言中,例如 C#,您可以使用“this”关键字引用该方法绑定到的对象,而无需在方法原型中将其声明为参数。

这是 Python 中有意的语言设计决定,还是有一些实现细节需要将“self”作为参数传递?


阅读 57

收藏
2022-06-20

共1个答案

小编典典

我喜欢引用 Peters 的 Python Zen。“显式胜于隐式。”

在 Java 和 C++ 中,this.可以推导出 ‘ ‘,除非您的变量名称无法进行推导。所以你有时需要它,有时不需要。

Python 选择使这样的事情变得明确而不是基于规则。

此外,由于没有任何暗示或假设,因此公开了部分实现。 self.__class__self.__dict__并且其他“内部”结构以明显的方式可用。

2022-06-20