Python 中的 self 是啥?这是面试绕不过去的点!

liftword4周前 (04-05)技术文章14

说到面试 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 就像是个“指路人”,带着方法找到对象自己的数据。


常见面试问题:

  1. self 是必须的吗?
    是的。self 是方法的第一个参数,必须显式写出来。虽然你可以用别的名字代替 self,但没人这么干,约定俗成用 self。
  2. 为什么不能省略 self?
    如果没有 self,Python 怎么知道属性属于哪个对象?直接会报错。
  3. 类方法和实例方法的区别?
  4. 实例方法:默认有 self 参数,操作实例的属性。
  5. 类方法:用 @classmethod 装饰,参数是 cls,操作类本身。
  6. 静态方法:用 @staticmethod 装饰,和类、实例都无关,像普通函数。

总结一下

self 是类方法和实例绑定的关键,理解它是掌握面向对象编程的第一步。
下次面试问到“self 的作用”,咱直接干脆利落回答:“它指的是当前实例,用来访问对象的属性和方法!”

相关文章

Python里面的self,是谁啊?

大家学Python面向对象的时候,总会遇到一个让人难以理解的存在:self这个self到底是谁啊,为什么每个类实例方法都有一个参数self,它到底有什么作用呢?「先下结论:类实例化后,self即代表着...

如何理解Python类中的self?

许多python初学者,在接触到python面向对象的时候,就被类中包含的方法中的self打败了,不知道self是何物?既然写在方法中,是必须参数,为何在调用方法的时候不给它传参数还能正常运行?和我们...

读懂python中的self

一、self的作用self指的是调用该函数的对象(是一个实例)。Python中self等价于Java中的this。首先明确的是self只有在类中的方法中才会有,独立的函数或方法是不必带有self的。例...

python类杂谈,self 到底是什么

在python中,无论是在__init__方法,还是自定义的方法中,他们都必有第一个参数 self初学者可能会对这个参数很迷惑,这个参数好像没啥用,毕竟又不需要传参,每次定义函数又必须写上,你可能会觉...

Python类中的self到底是干啥的

Python编写类的时候,每个函数参数第一个参数都是self,一开始我不管它到底是干嘛的,只知道必须要写上。后来对Python渐渐熟悉了一点,再回头看self的概念,似乎有点弄明白了。首先明确的是se...