Python中用__self__作为实例方法首个参数是否有特殊作用?
关于用
__self__作为方法第一个参数的问题 首先明确:__self__作为实例方法的第一个参数没有任何特殊语法功能,它本质就是个普通的参数名,和你用abc、xyz当参数名没区别。
具体解释:
- Python里实例方法的第一个参数名字只是约定俗成用
self,不是语法强制要求的关键字。你可以给它起任何名字,包括带双下划线的__self__。但双下划线开头的名字在这里不会触发类的名称修饰机制(名称修饰只针对类的属性/方法名,方法参数是局部变量,不受影响)。 - 这段代码的怪异之处不在于参数名,而在于它完全没必要写成类的实例方法:
- 方法里根本没用到
__self__这个参数,直接返回输入的value - 类没有
__init__方法,实例化后也没有任何内部属性可操作 - 这种场景下,要么直接写成独立函数,要么把方法改成
@staticmethod(不需要任何第一个参数),写成实例方法纯粹是多此一举。
- 方法里根本没用到
结论:
这不是什么需要学习的特殊知识点,更大概率是编写者缺乏Python经验的表现——可能误以为self是必须要写的关键字,或者想刻意搞“特殊”写法,但这种写法既不符合PEP8的可读性规范,也没有任何实际意义,反而会让其他维护代码的人困惑。
内容的提问来源于stack exchange,提问作者John Von Neumann
相关产品推荐
相关产品推荐

