栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

python中self理解

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

python中self理解

为了说清楚 self 是个什么东西,你首选需要搞清实例与类之间的关系。

人就是一种类,人有名字,身高,体重等属性,不同人这些属性都是不一样的,除此之外,人还有很多方法(功能),例如,思考、跑步、睡觉等等。

class Person :
	def __init__(self,name) :
	self.name = name
	
	def think(self):  # self其实就是类函数think的一个普通参数而已,表示被调用的对象,参数具体值也即我们的实例对象
	print("{} is thinking".format (self.name) )

具体到每一个人,例如你自己,你身边的每一个具体的人,都是「人类」的实例对象,例如:

xiaoming = Person( "xiaoming")

我构造了一个叫"xiaoming"的人,它是Person类的实例对象,我们给Person类定义了一个think方法,但是需要一个参数,我们可以把xiaoming这个实例对象传递过去。

>>>Person.think(xiaoming)
xiaoming is thinking

所以,这里的 self 其实就是类函数 think 的一个普通参数而已,表示被调用对象,具体值即我们的实例对象,那为什么要叫self呢?其实这是约定俗成的,你叫其他名字也没关系,不过通常不这么做,就好比我们平常交流都是用普通话,突然冒出一句洋文,别人不一定能听懂。

那为什么我们平常调用 think 方法的时候不是这样调用,而是直接用**[实例.方法]**形式调用呢?

>>>Person.think

>>> lisi.think
>

前者是一个在 Person类 中的普通函数,后者是被绑定了的方法, 因self 其实就是类函数 think 的一个普通参数而已,指被调用对象,参数具体值也即我们的实例对象,当通过[实例.方法]调用时候,该方法与当前实例对象进行了绑定,调用的时候,python会自动把实例对象作为参数传递过去,不需要再传递参数。

>>> xiaoming.think( )
xiaoming is thinking

这就是self的概念

说明:
1、实例继承了类的所有属性和方法。
2、类中_init__()方法是一种特殊的方法,被称为类的构造函数或初始化方法,当创建了这个类的实例时就会调用该方法
3、self 代表类的实例,self 在定义类的方法时是必须有的,虽然在调用时不必传入相应的参数

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/754113.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号