在Python面向对象编程中,self是一个指向类实例自身的引用参数:
1. 本质与作用
- 身份标识:
self是类实例化后对象的"身份证",代表当前实例本身,用于区分不同实例的属性和方法 - 自动传递:调用实例方法时,Python会自动将实例作为第一个参数(即
self)传入,无需手动传递 - 命名约定:
self仅为约定俗成的名称,可替换为其他标识符(如this),但不符合代码规范
2. 核心使用场景
(1) 访问实例属性
class Person:
def __init__(self, name):
self.name = name # 通过self绑定实例属性
- 未使用
self的变量会成为局部变量,方法执行后即销毁
(2) 调用实例方法
class Calculator:
def add(self, a, b):
return a + b
def compute(self, x, y):
return self.add(x, y) # 通过self调用其他方法
- 若省略
self,Python会误判为调用全局函数
(3) 动态管理属性
class Dynamic:
def set_attr(self, key, value):
setattr(self, key, value) # 动态添加/修改属性
3. 特殊注意事项
- 构造方法:
__init__中的self指向新创建的实例,用于初始化属性 - 类方法:类方法(
@classmethod)使用cls替代self,表示类本身而非实例 - 常见错误:
- 忘记声明
self参数导致TypeError - 在静态方法(
@staticmethod)中误用self
- 忘记声明
4. 设计哲学
- 明确性:通过
self显式区分实例变量与局部变量,避免命名冲突 - 链式调用:返回
self可实现方法链式调用(如obj.method1().method2())
通过合理使用self,可以构建符合Pythonic风格的面向对象代码,实现数据封装与行为绑定
11万+

被折叠的 条评论
为什么被折叠?



