Python 中的 self 是啥?这是面试绕不过去的点!
说到面试 Python,self 绝对是“高频题”。别小看它,这玩意儿是面向对象编程里非常核心的概念。
简单来说,self 就是方法绑定到实例的桥梁,用来指代“当前对象”。
为啥离不开 self?
你写类的时候,会定义一些方法对对象的属性进行操作,比如给一只狗设置名字,让它叫。
self 就是告诉 Python:“嘿,方法属于谁?”这样才能正确访问或修改对象的属性。
举个例子,看完就懂了
class Dog:
def __init__(self, name): # 注意这里有个 self
self.name = name # self.name 是当前实例的名字
def bark(self):
print(f"{self.name} says: Woof!") # 用 self 调用当前实例的属性
# 创建两只狗
dog1 = Dog("Buddy")
dog2 = Dog("Max")
dog1.bark() # 输出:Buddy says: Woof!
dog2.bark() # 输出:Max says: Woof!
看出来了吧?self 就像是个“指路人”,带着方法找到对象自己的数据。
常见面试问题:
- self 是必须的吗?
是的。self 是方法的第一个参数,必须显式写出来。虽然你可以用别的名字代替 self,但没人这么干,约定俗成用 self。 - 为什么不能省略 self?
如果没有 self,Python 怎么知道属性属于哪个对象?直接会报错。 - 类方法和实例方法的区别?
- 实例方法:默认有 self 参数,操作实例的属性。
- 类方法:用 @classmethod 装饰,参数是 cls,操作类本身。
- 静态方法:用 @staticmethod 装饰,和类、实例都无关,像普通函数。
总结一下
self 是类方法和实例绑定的关键,理解它是掌握面向对象编程的第一步。
下次面试问到“self 的作用”,咱直接干脆利落回答:“它指的是当前实例,用来访问对象的属性和方法!”