zoukankan      html  css  js  c++  java
  • self是什么?什么时候加?什么时候不加?

    Python里边self倒底是什么?什么时候加self?什么时候不加?

    1. self是什么?

      • 如果你问别人大多人回答是: 指对象本身,然后噼里啪啦说一堆,然后听完的你,仍然完全搞不清楚,什么时候变量前需要加self,什么时候不需要加self。造成很多人,已经怕了self,不停地测试,加self减self来测试代码,或者干脆不知道要不要self,所有变量前面一律加self,这样就能瞎猫碰死老鼠了,但不弄清楚,长期这样做法有点悲剧。
    2. 所以不需要这么去想self代表对象本身,换个思维应该认为self是全局变量。

    • 如果变量前面加了self,那么在任何实例方法(非staticmethod和calssmethod)就都可以访问这个变量了
    #! /usr/bin/python3
         
    class Test():
         """变量在函数内部"""
         
         def test_login(self):
              # 变量在函数内部
              self.word = "骑着乌龟赶猪"
         
         def common(self):
              # 打印会报错
              print(self.word)
         
    T = Test()
    T.common()
         
    ***
         
    #! /usr/bin/python3
         
    class Test():
        """变量在函数外部,属公共的"""
         
        word = "骑着乌龟赶猪"
             
        def test_login(self):
              # 正常打印
              print(self.word)
         
        def common(self):
              # 正常打印
              print(self.word)
         
         
    T = Test()
    T.common()
    T.test_login()
    
    • 如果没有加self,只有在当前函数内部才能访问这个变量
    #! /usr/bin/python3
       
    class Test():
          """调用方法中的私有属性"""
           
           def test_login(self):
               word = "骑着乌龟赶猪"
               # 正确打印
               print(word)
       
           def common(self):
               # 打印会报错
               print(word)
       
    T = Test()
    T.test_login()
    T.common()
    
    1. 类中方法如何调用

    调用类中方法:self.方法名

    #! /usr/bin/python3
          
    class Test():
          """调用类中方法"""
          
          
          def test_login(self):
                print("调用登录方法")
          
          def test_exit(self):
               self.test_login()
          
    T = Test()
    T.test_exit()
    

    如果对软件测试、接口测试、自动化测试、技术同行、持续集成、面试经验交流。感兴趣可以进到902061117,群内会有不定期的分享测试资料。
    如果文章对你有帮助,麻烦伸出发财小手点个赞,感谢您的支持,你的点赞是我持续更新的动力。

  • 相关阅读:
    配置对即时负载的优化
    通过重组索引提高性能
    使用索引视图提高性能
    sqlcmd
    (转)使用SQLCMD在SQLServer执行多个脚本
    在SQLServer处理中的一些问题及解决方法 NEWSEQUENTIALID()
    java反射机制与动态代理
    天天用的开发环境,你真的了解吗?
    通过IP获取对应所在地的地址
    unity3d KeyCode各键值说明
  • 原文地址:https://www.cnblogs.com/zzpython/p/13377361.html
Copyright © 2011-2022 走看看