zoukankan      html  css  js  c++  java
  • Python中的self通俗理解(自己理解的,自我感觉比官网解释要容易懂)

    在Python开发中,我们常常需要在类中加上self或者pycharm工具在类中定义方法的时候就自动帮你加上了self,这是为啥呢?

    起初我也不是特别明白,不停的查资料,后来想了想,这种解释感觉也行得通,所以就想写下来,难免以后会忘记;

    self,网上标准化的解释是表示类的实例,其实这个还是好理解的,只是后来又说了一大堆啥不是代表类,代表this,继承的时候能不能写等等,我就乱了,然后自己总结了一下;

    总结如下:

      1 因为Python是解释性语言,而我们所说的Java和C都是编译性语言,所以各语言的特点不一样,所以也会有区别;首先来说一下和Java中this的区别,在我看来,self和this在用法是确实是一致的,都是表示这个类,但是有区别,举个例子,在一个方法中,使用self和this是不一样的,在Python方法中加入self,因为Python是解释性语言,代码是从上往下是一行行执行的,所以在执行的时候,这个方法并不知道它是属于哪一个类的(换句话讲是它只是类中的一个方法,但是它并不是知道它是属于哪个类),所以加入self其实是告诉这个方法我是哪个类中的方法,所以要先用self,告诉这个方法,让它知道它调用的是那一个类;而Java不一样,对于编译性语言来讲,class类中不管是变量还是方法,全都是一次性打包完成的,所以就Java中的方法其实是知道它是属于哪一个类的,这也是为啥在Java类中的方法不需要直接在第一个参数中写this的原因;

    代码解释:

    class st(object):
        def __init__(self , name ,age):
            self.name = name
            self.age = age
        def na(self):
            print(self)
            print(self.age , self.name)
        def ag():
            print('dsdsds')
            
    
    if __name__ == '__main__':
        t = st('caizhou'  , 23)
        t.na()
        st.ag()

    结果:

     这里ag方法报错了,但是能输出结果,是不是很说明问题了?

    Java就不写了,感觉到这里也基本上证实了我的猜想了!这是第一点,也是最重要的一点;

      2 至于说继承,大概说一下吧,继承的时候就是如果是子类调用父类的方法,只要是实例化了子类的对象,self统统都是实例化的子类的self,就算是调用父类的方法,self也是子类的实例化对象;

    代码解释:

    class Pa:
        def pprt(self):
            print(self)
    class Ch(Pa):
        def cprt(self):
            print(self)
    
    c = Ch()
    c.cprt()
    c.pprt()
    p = Pa()
    p.pprt()

    应该写的比较明白了,我感觉self的用途就这些了,只需要记住啥时候用self,啥时候不用就行了

    结果:

     到这里就讲完了,以后想到啥了再补充,多指正,再见!!!!!

    祈福@点亮希望
  • 相关阅读:
    知识图谱应急安全场景应用规划
    DataxWeb 设置运行错误
    Datax mysql 8.x elasticsearch 7.x 测试成功json样例
    testmysqltoelasticsearch76.json 未测试,仅参考
    testmysqltoelasticsearch75.json 未测试,仅参考
    testorcletoelasticsearch73.json 微测试,仅参考
    testmysqltoelasticsearch74.json 未测试,仅参考
    testmysqltoelasticsearch72.json 微测试,仅参考
    go可变参数
    Java 8 终于支持 Docker !
  • 原文地址:https://www.cnblogs.com/caizhou520/p/14618100.html
Copyright © 2011-2022 走看看