请问各位大佬,self到底是什么呀?
self到底是什么?self是用来干嘛的呀,为什么有些图片前面要带个.self,有些就不用呢?
还有这个self到底何时使用呢?
求各位大佬能不能用通俗一点的话解答,谢谢各位大佬帮助! self代表类的实例本身
指向自身 基础知识点:
----------------------------------------------------------------------------------------------------------------
每件物品 都有 它的 叫法 名称; 如: 桌子, 椅子
每件事情 都有 它的 叫法 名称; 如: 走路, 跑步
每位自然人 都有 他的 名字; 如: 小明, 小红
----------------------------------------------------------------------------------------------------------------
物品 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
事情 有多少件? 很多很多, 怎么指定? 靠 叫法 名称 名字
自然人 有多少位? 很多很多, 怎么指定? 靠 叫法 名称 名字
----------------------------------------------------------------------------------------------------------------
当有 相同 物品 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 事情 的时候, 怎么区分它们? 靠 编号(self)(自身)
当有 相同 自然人(多胞胎) 的时候, 怎么区分它们? 靠 编号(self)(自身)
----------------------------------------------------------------------------------------------------------------
所以你可以理解为 在写 class 的时候给的 编号 标签(self),
但是 在写 class 里面的时候 编号 还是空的(None), 未定义
等待你调用的时候给 它(class) 赋予 一个 编号
这样你就完成了一次 申明 调用.
编号 它 自身 的 类...
----------------------------------------------------------------------------------------------------------------
比如你前面自己说的图片前面有 self.图片 , 他 自身 自己 的图片
很多相同物品的时候, 怎么看他们 自己 的图片?
调用编号_1.图片
调用编号_2.图片
调用编号_3.图片
每个 都是 他 自己 自身 的图片, 不同的图片
类就相当于一张图纸 然后我们通过这张图纸来产生对象
我们可以通过同一张图纸产生无数个对象.比如说;我们可以通过一张汽车设计图生产几万辆一样的汽车.
但问题是;我们在日常使用中还是需要区分这样一摸一样的汽车的.所以我们会给汽车编号或者取一个名字.这样可以区分它们 比如; 汽车A 汽车B 等等
self参数就是用来区分不同对象的. 一个类可以创建无数个对象 每一个对象都会有一个属于自己的self参数 这样我们就不会把对象弄混了.
我们在定义一个类中的方法时,通常会写上self参数,这样做不同的对象调用的都是属于自身这个对象的方法,而不是其他对象的方法.
class Ren():
# 定义一个人的类
# 人应该具备的基本属性
def __init__(self,xingming,nianling,xingbie) -> None:
self.xingming = xingming
self.nianling = nianling
self.xingbie = xingbie
# 定义人的基本功能
def huoqu_nianling(self) -> int:
return self.nianling
def huoqu_xingming(self) -> str:
return self.xingming
# 基于Ren这张图纸创建对象,同时思考一个问题;如果保证每一个对象调用的方法不会混淆?
xiaoming = Ren(xingming='小明',nianling=28,xingbie='男')
xiaozhang = Ren(xingming='小张',nianling=25,xingbie='男')
print(xiaoming.huoqu_xingming()) # 打印结果是小明
print(xiaozhang.huoqu_xingming()) # 打印结果是小张
# 也就是说;我们用xiaozhang这个对象调用类Ren中的方法得到的是只属于xiaozhang这个对象的数据而不是其他对象的.
# 能做到这一点都是self参数的功劳.你可以简单的理解为;当对象被创建时,对象名会自动传给__init__函数的中seif参数
# 从而实现了对象和方法以及属性之间的绑定
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
页:
[1]