Python中有self和沒有self的問題
阿新 • • 發佈:2018-10-31
今天在練習敲程式碼的時候遇到一個問題就是關於self!!!
教材中定義方法時沒有加self,而我自己按照平時的套路敲的時候仍然敲了self,後面再照著教材中去呼叫該方法時報錯,如下:
LoginPage().test_user_login(driver,username,password)
TypeError: init() missing 1 required positional argument: ‘driver’
提示丟失了一個初始化的引數。
部分程式碼如下:
class BasePage:
def __init__(self,driver):
self.driver=driver
class LoginPage(BasePage):
...
#按照教材上定義這個方法時時沒有加self的:
#def test_user_login(driver,username,password):
#自己慣性操作,寫成了這樣:
def test_user_login(self,driver,username,password):
login_page=LoginPage(driver)
login_page.open()
login_page.type_username(username)
login_page.type_password(password)
login_page.type_submit()
#呼叫方法的程式碼
LoginPage().test_user_login(driver,username,password)
提示報錯後,找了一些網上的資料,也請教了一些高人,最後得知如果要self的話,還有一種辦法可以,就是在呼叫類的方法的時候初始化一個物件,如:
LoginPage(driver).test_user_login(driver,username,password)
在呼叫LoginPage的時候例項化一個物件driver即可。
雖然現在還不能完全吃透這個解釋,大家可以參考博友的:
https://blog.csdn.net/smalltankpy/article/details/54945135
這篇文章講述的比較簡單明瞭。
我就先記住了:
定義方法的時候加了self,那麼在呼叫這個類中的方法時就必需要例項化一個物件,即:類(物件).方法(引數)
定義方法的時候沒有加self,那麼呼叫這個類的方法時就可以直接呼叫方法,即:類.方法(引數)
大家有什麼好的理解可以相互學習!
與君共勉!