温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Python里的Self是什么

发布时间:2023-05-17 11:42:27 来源:亿速云 阅读:93 作者:zzz 栏目:编程语言

这篇文章主要介绍“Python里的Self是什么”,在日常操作中,相信很多人在Python里的Self是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Python里的Self是什么”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

大家学Python面向对象的时候,总会遇到一个让人难以理解的存在:self。

这个self到底是谁啊,为什么每个类实例方法都有一个参数self,它到底有什么作用呢?

「先下结论:类实例化后,self即代表着实例(对象)本身。」

想要理解self有个最简单的方法,就是你把self当做「实例(对象)的身份证。」

Python的类不能直接使用,只有通过创建实例(对象)才能发挥它的功能,每个实例(对象)都是独一无二的,它可以调用类的方法、属性。类就像灵魂附体一样,让实例(对象)有了自己(self)的功能。

Python里的Self是什么

初学者会发现,类的方法(构造方法和实例方法)中都会有一个固定参数self,其实这个参数就是代表着实例(对象)本身,就像是一个身份证,实例可以凭着身份证去调用类方法。

Python里的Self是什么

类比人类,人类就是一个Python类,每个个体的人代表着实例(对象),而每个人的身份证代表的Python中self,每个人可以凭借身份证去上大学、坐高铁、住酒店...(方法),而Python中的实例(对象)也可以凭着self去调用类的方法。

Python里的Self是什么

上面是用类比的方法解释了下self的含义,说到底self就是代表着实例本身,「当某个实例(对象)调用类方法时,该对象会把自身的引用作为第一个参数自动传给该方法,而这第一个参数就是self。」

而且self只是约定俗成的写法,你可以用任何其他名称代替self,不会改变代码含义,只不过我们一般不这样做。

为了更好的说明self的作用,我们来举个例子,下面有一个Students类:

class Students:
# 构造方法
def __init__(self,name):
self.name = name
# 实例方法
def study(self,examination_results):
self.examination_results = examination_results
print("同学{}的考试分数是{}".format(self.name,self.examination_results))
print("该实例对象的地址是{}".format(self))

先来个实例student_a。

studend_a = Students('studend_a')
print(studend_a.name)

结果打印出:studend_a。

再来个实例student_b。

studend_b = Students('studend_b')
print(studend_b.name)

结果打印出:studend_b。

可以看出,实例(对象)不一样,打印出的结果也不一样,当类被实例化后,self.name其实就等于实例(对象).name。

还是以刚刚的代码为例,我们再来调用里面的实例方法,里面会打印出self,就能看得更加明显了。

实例student_a:

studend_a = Students('studend_a')
print(studend_a.study(80))

输出结果:

同学studend_a的考试分数是80 该实例对象的地址是<「main」.students object="" at="" 0x00000129eb0f6a90="">。

实例student_b:

studend_b = Students('studend_b')
print(studend_b.study(80))

输出结果:

同学studend_b的考试分数是80 该实例对象的地址是<「main」.students object="" at="" 0x00000129eb0f6b38="">。

大家能清楚看到两个实例打印出的self是不一样的,因为self代表着实例(对象)本身。

以实例student_b来说,打印self出现下面对象信息。

<__main__.students object="" at="" 0x00000129eb0f6b38="">。

如果再打印 student_b,会出现同样的结果。

print(student_b)

输出:

<__main__.students object="" at="" 0x00000129eb0f6b00="">。

这个时候是不是就清楚了,类实例化后,self即代表着实例(对象)本身。

到此,关于“Python里的Self是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注亿速云网站,小编会继续努力为大家带来更多实用的文章!

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI