为什么Python开发者称当前引用为“self”而不是“this”?

55 投票
8 回答
6349 浏览
提问于 2025-04-15 12:40

我最熟悉的编程语言是Python,但奇怪的是,我还是不知道为什么要用“self”这个词,而不是像Java或PHP那样用“this”。

我知道Python比Java早,但我搞不清楚这个“self”是从哪里来的。特别是因为在Python中,你其实可以用任何名字代替“self”,程序照样能正常运行。

那么,这个用法的习惯是从哪里来的呢?

8 个回答

19

Smalltalk是一种编程语言,它比Java早出现很多。

31

查看一下Python 的历史,了解用户自定义类的内容:

其实,只需要定义一个函数,这个函数的第一个参数就是实例,按照惯例,这个参数叫做“self”。举个例子:

def spam(self,y):
    print self.x, y

这种方法让我想起了我在 Modula-3 看到的东西,那时候我已经学会了如何使用导入和异常处理的语法。

这也是一种选择,和其他选择一样好。你可能会问,为什么 C++、Java 和 C# 选择用“this”来表示。

80

Smalltalk-80是1980年由施乐公司发布的,它使用了self这个词。Objective-C(1980年代初)在C语言的基础上加入了Smalltalk的特性,所以它也用self。Modula-3(1988年)、Python(1980年代末)和Ruby(1990年代中期)也都沿用了这个传统。

C++同样是1980年代初期的产物,但它选择了this而不是self。因为Java是为了让C/C++开发者更容易上手而设计的,所以它也使用this

Smalltalk用对象之间发送消息的比喻来解释,所以“self”就是指这个对象在给自己发送消息。

撰写回答