標籤:除了 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