python中的self的理解

在python我们学到类的时候会发现一个神奇的事,原来书写一个没有参数的函数如下:

def eat():
    print("小猫爱吃鱼")
eat()

结果:
在这里插入图片描述
从上面基本的函数中我们发现不刻意用参数的时候函数名后面的括号中什么都没有,我们调用函数的时候也没有传参数给这个函数,函数 一向是不调用不执行这么一来 我带大家看一下函数在类中的方法书写:

class Cat:
    def eat(self):
        print("小猫爱吃鱼")
    def drink(self):
        print("小猫要喝水")
#创建cat对象
tom=Cat()
tom.eat()
tom.drink()

结果:
在这里插入图片描述
在类中写一个方法的时候会自动带一个self参数,在实例化对象后调用这个方法的时候虽然未给方法传该参数但是方法却执行了,那这个self参数到底是干啥的呢?我们进一步来看代码:

class Cat:
    def eat(self):
        #哪一个对象调用的方法,self就是那一个对象的引用方法
        print("%s爱吃鱼"%self.name)
    def drink(self):
        print("%s要喝水"%self.name)
#创建cat对象
tom=Cat()
#给对象增加属性
tom.name="Tom"
tom.eat()
tom.drink()

结果:
在这里插入图片描述
看到上面的代码感觉更神奇了,我们在Cat这个类中并未定义name这个属性,只在实例化对象后给对象增加了这个属性,这时并未为给方法传指定的值方法却用了我们书写的属性,这一切是咋回事呢,其实这一切都是self起的作用,当一个对象调用这个方法,self就是那一个对象的引用方法,具体说如下图 :
在这里插入图片描述
由于python是执行时用解释器一句一句解释,当遇到类不会立即执行,它会继续向下,当执行到创建对象的时候,会创建一个Cat对象存在内存地址中由tom这个变量引用,这时继续执行给tom这个对象增加了一个name属性保存了Tom这个字符串,继续向下执行调用eat()方法,这时eat()方法中的self就是tom这个对象的引用,然后用self访问tom中的Tom属性用self.name就可以访问到。
总结:self就是当那个对象调用的方法,self就是那一个对象的引用方法

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值