为什么Python开发者称当前引用为“self”而不是“this”?
我最熟悉的编程语言是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”就是指这个对象在给自己发送消息。