Python里邊self倒底是什么?什么時候加self?什么時候不加?
-
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.方法名
#! /usr/bin/python3
class Test():
"""調用類中方法"""
def test_login(self):
print("調用登錄方法")
def test_exit(self):
self.test_login()
T = Test()
T.test_exit()
如果對軟件測試、接口測試、自動化測試、技術同行、持續集成、面試經驗交流。感興趣可以進到902061117,群內會有不定期的分享測試資料。
如果文章對你有幫助,麻煩伸出發財小手點個贊,感謝您的支持,你的點贊是我持續更新的動力。