1. 程式人生 > >Python中有self和沒有self的問題

Python中有self和沒有self的問題

今天在練習敲程式碼的時候遇到一個問題就是關於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,那麼呼叫這個類的方法時就可以直接呼叫方法,即:類.方法(引數)

大家有什麼好的理解可以相互學習!
與君共勉!