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

若是文章對你有幫助,麻煩點個贊,感謝您的支持,你的點贊是我持續更新的動力。對象