python self太多_大家是如何理解Python中的self?

如果你知道java或者javascript中的this,那么self的作用和他们是一样的,不过我猜你可能也没接触过这两门语言。

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

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

class Person:

def __init__(self, name):

self.name = name

def think(self):

print("{}is thinking".format(self.name))

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

lisi = Person("lisi")

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

>>> Person.think(lisi)

lisi is thinking

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

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

>>> Person.think

>>> lisi.think

>

前者是一个在 Person 中的普通函数,后者是被绑定了的方法,该方法与当前实例对象进行了绑定,意味着 调用 lisi.think 时不再需要传递参数,因为已经将lisi进行的绑定,调用的时候,python会自动把lisi作为参数传递过去。也就是说,调用的时候,会把当前对象自己传递过去。

>>> lisi.think()

lisi is thinking

>>>

以上就是self的概念

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值