suede 发表于 2021-1-14 08:24:15

不怎么能理解面向对象编程中的self

小甲鱼把self比作门牌号,那么每个门牌号都是self咯?

heidern0612 发表于 2021-1-14 08:34:13

你实例化啥,self就是啥。

suede 发表于 2021-1-14 08:53:49

heidern0612 发表于 2021-1-14 08:34
你实例化啥,self就是啥。

意思就是我实例化了一个对象后,self就指向该对象,然后无论我执行类中的不管任何方法,都会根据self的这个指向来完成指令吗?

heidern0612 发表于 2021-1-14 08:58:08

suede 发表于 2021-1-14 08:53
意思就是我实例化了一个对象后,self就指向该对象,然后无论我执行类中的不管任何方法,都会根据self的这 ...

类中带self的指令都指向实例化本身。

不带的基本都是静态属性,也就是类属性。

Twilight6 发表于 2021-1-14 09:44:06


self 参数就是指实例对象本身,举些例子:

假如你定义了一个 Fishc 类,当你实例化对象时 A = Fishc() 那么此时 A 就代表 Fishc() 类实例对象中的 self ,即本身

所以在类中带 self.xxx 的就是指获取自身实例对象所有属性或者方法

类属性 和 局部变量很类似,但是存放范围不同

类属性是放在类中的方法外,类内的空间

而局部变量是定义于类方法中的,他们都是以 变量名 = 数值 来定义变量的

而实例属性就比较好分辨,即 self.变量名 = 数值 这样特定格式来定义的

jackz007 发表于 2021-1-14 09:59:18

本帖最后由 jackz007 于 2021-1-14 11:06 编辑

      self 只在类的方法定义中有用,比如
def reversed(self):
    pass
def foo(self):
    self . reversed()
    return self . x + self . y
      只有加了 self 前缀,才知道访问的是类的属性和方法,否则,与访问全局变量 x、y 及 Python 的内置函数 reversed() 有什么区别?
页: [1]
查看完整版本: 不怎么能理解面向对象编程中的self