python的self理解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/test_xhz/article/details/82428498

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, 但是也可以取其他名字, 而且类实例调用的方法时候不需要给第一个参数传递值。

猜你喜欢

转载自blog.csdn.net/test_xhz/article/details/82428498
今日推荐