Python里边的self究竟是什么?何时加self?何时不加?

Time will tell(时间会证实一切).python

一、self是什么?

若是你问别人大多人回答是:指对象自己,而后噼里啪啦说一堆,而后听完的你,仍然彻底搞不清楚,何时变量前须要加self,何时不须要加self。面试

形成不少人,已经怕了self,不停地测试,加self减self来测试代码,或者干脆不知道要不要self,全部变量前面一概加self,这样就能瞎猫碰死老鼠了,但不弄清楚,长期这样作法有点悲剧。函数

二、因此不须要这么去想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()

 

三、类中方法如何调用

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

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

 

絮叨

对接口、自动化、软件测试零基础入门、python全栈、面试题感兴趣能够加入咱们175317069一块儿学习,群内会有不按期测试资料连接发放喔。code

若是文章对你有帮助,麻烦点个赞,感谢您的支持,你的点赞是我持续更新的动力。对象