python 类里面函数的self

Python 要求,类方法(构造方法和实例方法)中至少要包含一个参数,但并没有规定此参数的名称(完全可以叫任意参数名),之所以将类方法的第一个参数命名为 self,只是 Python 程序员约定俗成的一种习惯,这会使程序具有更好的可读性。

通常在写class的时候,定义多个方法,只需要self.一下这个方法名就可以调用和执行这个方法,这实际上是一个python的内部寻址机制,叫做命名空间检索。

1,self名称不是必须的,在python中self不是关键词,你可以定义成a或b或其它名字都可以 ;

2,self在定义类的方法时是必须位于第一个参数;

3,self总是指向调用时的类的实例;

4,self就是本身的意思,为了便于程序的,就得在类这个调用多个函数中,先申明自己是谁,到底是self,还是self. 所以必须有参数;

class Stu:
    def __init__(self):
        self.age = 18

    def A(MM): # 修改self的名字为MM
        print('A')
        print(MM.age)
        print(id(MM.age))        

        print('--------')
    def B(GG):
        print('B')
        GG.age = 19 # 改变age的值
        print(GG.age)
        print(id(GG.age))
        
        print('--------')
    def C(self):
        print('C')
        print(self.age)
        print(id(self.age))

        print('--------')
a = Stu()
a.A()
a.B()
a.C()

小结 :

1,__init__(self): 初始化的属性变量 self.age = 18,为公共属性;

2,在定义A函数的时候参数名修改为 MM,

M.age 依然可以获取到 __init__(self): 下的 self.age = 18;

3,公共的self 初始化定义的值,从上至下,B函数中赋值19给变量age是可以被修改的

C函数中self.age 已经为19;

4,C和B,分别调用的.age值的内存地址是一致的,B函数如果不给.age赋值19 ,实践上A,B,C分别的 .age 的 值和内存地址都是一致的

猜你喜欢

转载自blog.csdn.net/qq_26086231/article/details/121090262
今日推荐