鱼C论坛

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

[已解决]请问各位大佬,self到底是什么呀?

[复制链接]
发表于 2021-5-18 20:29:28 | 显示全部楼层 |阅读模式

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

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

x
self到底是什么?
self是用来干嘛的呀,为什么有些图片前面要带个.self,有些就不用呢?
还有这个self到底何时使用呢?

求各位大佬能不能用通俗一点的话解答,谢谢各位大佬帮助!
最佳答案
2021-5-19 04:46:32
基础知识点:
----------------------------------------------------------------------------------------------------------------
每件物品 都有 它的 叫法 名称;    如: 桌子, 椅子
每件事情 都有 它的 叫法 名称;    如: 走路, 跑步
每位自然人 都有 他的 名字;    如: 小明, 小红
----------------------------------------------------------------------------------------------------------------
物品 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
事情 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
自然人 有多少位? 很多很多, 怎么指定? 靠 叫法 名称 名字
----------------------------------------------------------------------------------------------------------------
当有 相同 物品 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 事情 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 自然人(多胞胎) 的时候, 怎么区分它们? 靠 编号(self)(自身)
----------------------------------------------------------------------------------------------------------------
所以你可以理解为 在写 class 的时候给的 编号 标签(self),
但是 在写 class 里面的时候 编号 还是空的(None), 未定义
等待你调用的时候给 它(class) 赋予 一个 编号
这样你就完成了一次 申明 调用.
编号 它 自身 的 类...
----------------------------------------------------------------------------------------------------------------
比如你前面自己说的图片前面有 self.图片 , 他 自身 自己 的图片
很多相同物品的时候, 怎么看他们 自己 的图片?
调用编号_1.图片
调用编号_2.图片
调用编号_3.图片
每个 都是 他 自己 自身 的图片, 不同的图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-5-18 20:41:53 From FishC Mobile | 显示全部楼层
self代表类的实例本身
   
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-18 21:46:45 | 显示全部楼层
指向自身
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-19 04:46:32 | 显示全部楼层    本楼为最佳答案   
基础知识点:
----------------------------------------------------------------------------------------------------------------
每件物品 都有 它的 叫法 名称;    如: 桌子, 椅子
每件事情 都有 它的 叫法 名称;    如: 走路, 跑步
每位自然人 都有 他的 名字;    如: 小明, 小红
----------------------------------------------------------------------------------------------------------------
物品 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
事情 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
自然人 有多少位? 很多很多, 怎么指定? 靠 叫法 名称 名字
----------------------------------------------------------------------------------------------------------------
当有 相同 物品 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 事情 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 自然人(多胞胎) 的时候, 怎么区分它们? 靠 编号(self)(自身)
----------------------------------------------------------------------------------------------------------------
所以你可以理解为 在写 class 的时候给的 编号 标签(self),
但是 在写 class 里面的时候 编号 还是空的(None), 未定义
等待你调用的时候给 它(class) 赋予 一个 编号
这样你就完成了一次 申明 调用.
编号 它 自身 的 类...
----------------------------------------------------------------------------------------------------------------
比如你前面自己说的图片前面有 self.图片 , 他 自身 自己 的图片
很多相同物品的时候, 怎么看他们 自己 的图片?
调用编号_1.图片
调用编号_2.图片
调用编号_3.图片
每个 都是 他 自己 自身 的图片, 不同的图片
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-5-19 20:19:31 | 显示全部楼层
类就相当于一张图纸 然后我们通过这张图纸来产生对象
我们可以通过同一张图纸产生无数个对象.比如说;我们可以通过一张汽车设计图生产几万辆一样的汽车.
但问题是;我们在日常使用中还是需要区分这样一摸一样的汽车的.所以我们会给汽车编号或者取一个名字.这样可以区分它们 比如; 汽车A 汽车B 等等
self参数就是用来区分不同对象的. 一个类可以创建无数个对象 每一个对象都会有一个属于自己的self参数 这样我们就不会把对象弄混了.
我们在定义一个类中的方法时,通常会写上self参数,这样做不同的对象调用的都是属于自身这个对象的方法,而不是其他对象的方法.



  1. class Ren():

  2.     # 定义一个人的类

  3.     # 人应该具备的基本属性
  4.     def __init__(self,xingming,nianling,xingbie) -> None:
  5.         self.xingming = xingming
  6.         self.nianling = nianling
  7.         self.xingbie = xingbie

  8.     # 定义人的基本功能
  9.     def huoqu_nianling(self) -> int:
  10.         return self.nianling

  11.     def huoqu_xingming(self) -> str:
  12.         return self.xingming


  13. # 基于Ren这张图纸创建对象,同时思考一个问题;如果保证每一个对象调用的方法不会混淆?

  14. xiaoming = Ren(xingming='小明',nianling=28,xingbie='男')
  15. xiaozhang = Ren(xingming='小张',nianling=25,xingbie='男')

  16. print(xiaoming.huoqu_xingming())    # 打印结果是小明
  17. print(xiaozhang.huoqu_xingming())   # 打印结果是小张

  18. # 也就是说;我们用xiaozhang这个对象调用类Ren中的方法得到的是只属于xiaozhang这个对象的数据而不是其他对象的.
  19. # 能做到这一点都是self参数的功劳.你可以简单的理解为;当对象被创建时,对象名会自动传给__init__函数的中seif参数
  20. # 从而实现了对象和方法以及属性之间的绑定

复制代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-5-21 12:44:09 | 显示全部楼层
linke.zhanghu 发表于 2021-5-19 20:19
类就相当于一张图纸 然后我们通过这张图纸来产生对象
我们可以通过同一张图纸产生无数个对象.比如说;我们 ...

就是像你上面这里的代码,如果没有self的话会怎么样?直接用赋值贴上个名字不就不会搞混了吗??
没有self会报错吗?还是说会找不到图片什么的呢????
# 人应该具备的基本属性
    def __init__(self,xingming,nianling,xingbie) -> None:
        self.xingming = xingming
        self.nianling = nianling
        self.xingbie = xingbie
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-23 10:34

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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