Python:为什么必须在方法定义和调用中明确使用'self'?

系统 1453 0

面向对象的语言有对象。对象是状态和行为的组合。对象需要访问自己的状态。这样做基本上有两个主要选择。要么你明确地说你何时访问一个对象的状态(通过self,this或者其他类似的东西),或者语言会为你找出。

让我先讨论后一种情况。存在名称冲突的问题。例如,如果对象的数据成员与方法参数的名称匹配,或者如果声明与数据成员的名称匹配的局部变量,会发生什么。您要么不允许这种情况,要么具有某种解决机制。Smalltalk是一个像这样工作的语言的例子,但我不记得语言是如何处理碰撞问题的。

在大多数OOP语言,当你从它的一个方法中引用一个对象的状态(或其他方式),你明确地说,就是你用做什么自我,或者这个,或者别的什么东西。这种功能的语言有两种形式。他们要么隐式地这样做 - 这意味着你不必声明链接实体(就像C ++那样)或者你明确地声明它(比如Python)。

请记住,在Python 中调用此链接实体self纯粹是一种约定; 所有程序员都应该遵循的有用约定,但仍然只是一个约定。你可以称之为,或州或我或任何东西,但这将是愚蠢的。该语言的作用是将调用对象显式传递给每个方法作为第一个参数,该参数用于访问状态和其他方法。

最后,Python使用self的方式是一种有利于(如Tony Flury所说)明确的设计决策。我相信很多人都有关于这是一个好的决定还是其他方面的想法。我的意见是,这是一个很好的。


更多文章、技术交流、商务合作、联系博主

微信扫码或搜索:z360901061

微信扫一扫加我为好友

QQ号联系: 360901061

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描下面二维码支持博主2元、5元、10元、20元等您想捐的金额吧,狠狠点击下面给点支持吧,站长非常感激您!手机微信长按不能支付解决办法:请将微信支付二维码保存到相册,切换到微信,然后点击微信右上角扫一扫功能,选择支付二维码完成支付。

【本文对您有帮助就好】

您的支持是博主写作最大的动力,如果您喜欢我的文章,感觉我的文章对您有帮助,请用微信扫描上面二维码支持博主2元、5元、10元、自定义金额等您想捐的金额吧,站长会非常 感谢您的哦!!!

发表我的评论
最新评论 总共0条评论