python什麼時候加self,什麼時候不加self

來源:互聯網
上載者:User

標籤:除了   login   Python一   cal   最好   res   stat   其他   span   

1、self是什麼,一般都說指對象本身,這樣說了沒了用,說了後還是很難懂,因為這樣說了後,仍然完全搞不清楚,什麼時候變數前需要加self,什麼時候不需要加self。

造成很多人,已經怕了self,不停地測試,加self減self來測試代碼,或者乾脆不知道要不要self,所有變數前面一律加self,這樣就能瞎貓碰死老鼠了,但不弄清楚,長期這樣做法有點悲劇。

 

2、所以不需要這麼去想self代表對象本身,換個思維應該認為self是全域變數,如果變數前面加了self,那麼在任何執行個體方法(非staticmethod和calssmethod)就都可以訪問這個變數了,如果沒有加self,只有在當前函數內部才能訪問這個變數。

 

3、根據pep8,所有的加了self的變數,需要確保是在__init__中首次出現,這是因為和java不一樣,python沒有成員聲明,python一下子很難知道有哪些成員變數,所以最好確保所有帶self首碼的變數是在__init__中首次出現。這條規則可以使用pycahrm的靜態檢查來證實或者pylint工具來證明。

 

 

4、重中之重就是首碼帶self的變數,就是在整個類的代碼塊裡面類似是作為全域變數,這樣想後就不會出現不知道要不要self或者瞎全加self。

 

5、錯誤的例子就是這樣,比如unitetst用例裡面:

def test_login(self):

     self.url = xxx

     self.resp = self.session.getself.url)

     self.text = self.resp.text

     self.status = self.resp.statuscode

 

要加這麼多self幹鳥。這些都是局部的,別的方法裡面不需要訪問這些變數,完全是需要去掉這些self。

 

除了session屬性需要共用以外,其他都要去掉,不然造成很大的誤導,會以為這些變數也需要在其他方法中去使用它。

python什麼時候加self,什麼時候不加self

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.