• 技术文章 >后端开发 >Python教程

    python self什么意思

    (*-*)浩(*-*)浩2020-09-18 13:48:00原创14089

    self的意思是“自身”,python中代表类的实例,而非类。self只有在类的方法中才会有,独立的函数或方法是不必带有self的;self在定义类的方法时是必须有的。self名称不是必须的,你可以定义成a或b或其它名字都可以,但是约定成俗,可减少理解难度。

    首先我们要搞明白Python的类中为要什么要用到self这个单词呢,为什么不用"zhangsan"、"lisi"这样的名字呢,这肯定有他的用意。

    self代表类的实例,而非类。

    class Test:
        def prt(self):
            print(self)
            print(self.__class__)
     
    t = Test()
    t.prt()

    执行结果如下:

    <__main__.Test object at 0x000000000284E080>
    <class '__main__.Test'>

    从上面的例子中可以很明显的看出,self代表的是类的实例。而self.class则指向类。

    类中的方法第一个参数必须是 self ,不然实例无法正确调用类中的方法,也就是说,如果方法中第一个参数不是 self(广义的),那么这个方法是没有任何价值的,因为实例无法调用它,一个无法被调用的方法真不知道有什么用。

    注意:把self换成this,结果也一样,但Python中最好用约定俗成的self。

    在继承时,传入的是哪个实例,就是那个传入的实例,而不是指定义了self的类的实例。

    class Parent:
        def pprt(self):
            print(self)
     
    class Child(Parent):
        def cprt(self):
            print(self)
    c = Child()
    c.cprt()
    c.pprt()
    p = Parent()
    p.pprt()

    运行结果如下:

    <__main__.Child object at 0x0000000002A47080>
    <__main__.Child object at 0x0000000002A47080>
    <__main__.Parent object at 0x0000000002A47240>

    解释:

    运行c.cprt()时应该没有理解问题,指的是Child类的实例。

    但是在运行c.pprt()时,等同于Child.pprt(c),所以self指的依然是Child类的实例,由于self中没有定义pprt()方法,所以沿着继承树往上找,发现在父类Parent中定义了pprt()方法,所以就会成功调用

    以上就是python self什么意思的详细内容,更多请关注php中文网其它相关文章!

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:python
    上一篇:python自学要多久能学会 下一篇:如何结束退出python脚本
    Web大前端开发直播班

    相关文章推荐

    • csdn培训python的课程怎么样• python内建函数是什么• python集合可变吗• python自学难吗

    全部评论我要评论

  • 取消发布评论发送
  • 1/1

    PHP中文网