鱼C论坛

 找回密码
 立即注册
查看: 1237|回复: 5

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

[复制链接]
发表于 2021-1-14 08:24:15 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
小甲鱼把self比作门牌号,那么每个门牌号都是self咯?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-14 08:34:13 | 显示全部楼层
你实例化啥,self就是啥。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-14 08:53:49 | 显示全部楼层
heidern0612 发表于 2021-1-14 08:34
你实例化啥,self就是啥。

意思就是我实例化了一个对象后,self就指向该对象,然后无论我执行类中的不管任何方法,都会根据self的这个指向来完成指令吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

不带的基本都是静态属性,也就是类属性。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-14 09:44:06 | 显示全部楼层

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

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

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

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

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

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

而实例属性就比较好分辨,即 self.变量名 = 数值 这样特定格式来定义的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-14 09:59:18 | 显示全部楼层
本帖最后由 jackz007 于 2021-1-14 11:06 编辑

      self 只在类的方法定义中有用,比如
  1. def reversed(self):
  2.     pass
  3. def foo(self):
  4.     self . reversed()
  5.     return self . x + self . y
复制代码

        只有加了 self 前缀,才知道访问的是类的属性和方法,否则,与访问全局变量 x、y 及 Python 的内置函数 reversed() 有什么区别?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-25 13:07

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表