Python类内调用方法为何需要使用self.方法名()的格式?
解答
在Python中调用同类下的实例方法必须加self前缀,核心原因如下:
- 类中定义的第一个参数为
self的方法属于实例方法,是绑定到具体类实例的属性,并不在普通方法的作用域查找范围内。如果直接写update_status(),Python会按「局部作用域→闭包作用域→全局作用域→内置作用域」的顺序查找同名函数,找不到就会直接抛出NameError报错。 self本质是当前类实例的引用,不管是调用实例的变量属性还是方法属性,都需要通过self这个实例引用访问。self.update_status()的写法就是明确告诉Python,你要调用的是当前这个实例自身的update_status方法,而非其他位置定义的同名函数。- Python的设计遵循「显式优于隐式」的原则,和Java、C++等语言允许隐式省略
this指针访问成员不同,Python要求所有实例成员的访问都显式添加self前缀,能让代码的可读性更高,一眼就能区分开访问的是实例成员还是局部/全局变量。
内容的提问来源于stack exchange,提问作者Naky
相关产品推荐
相关产品推荐

