python的self理解

 

self只会在类中定义函数时用到,定义函数时,一般默认把第一个参数写成self,这个self接收的实参是什么呢,其实一个类对象实例,那么这个self参数其实也就是一个变量, 只是这个变量指向类实例, 为什么我们通过实例调用类方法的时候不需要给第一个参数传值呢?是因为python解释器会在调用的时候把调用的类实例传递给方法。

下面通过一段代码来解释

#coding=utf-8

 

class People():

 

def __init__(self,name,height,weight):

self.name =name

self.height =height

self.weight = weight

 

def get_name(aaa): #类里面定义方法的时候第一个参数可以不是self,但是python解释器会把第一个参数当做类实例

return aaa.name

 

def get_height(self): #self代表的类实例本身,可以看做一个类对象变量

return self.height

 

 

p = People("zhangsan",182,60)

name = p.get_name()

print("name=",name)

height = p.get_height() #等价于 height = People.get_heght(p)

print("height=",height)

 

height1 = People.get_height(p) #这个时候给类函数调用显示给类方法传递了类实例

print("height1=",height1)

 

 

执行结果:

 

可以很明显的看到 类里面每一个方法定义的时候,第一个参数都指的是类实例,这个名字大家约定俗成是self, 但是也可以取其他名字, 而且类实例调用的方法时候不需要给第一个参数传递值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值