python帶driver參數(shù)的繼承和重寫init方法

1.父類中已經(jīng)有init模塊,子類繼承父類后,無需再初始化(init),實例化子類時,會自動調(diào)用父類定義的init【父親蓋了一樓,兒子想造房子就不需要再蓋一樓了】

2.父類中已經(jīng)有init模塊,子類繼承父類后需要擴展父類行為,需要子類重寫init,子類重寫init,實例化子類,就不會調(diào)用父類已經(jīng)定義的init【父親蓋了一樓,兒子想造二樓,需要先繼承一樓再建二樓-->重寫】

重寫init,要顯示調(diào)用父類的init方法,有以下兩種調(diào)用方式:案例帶有初始化參數(shù)的父類

  1. 調(diào)用未綁定的父類構(gòu)造方法

Base 父類初始化帶有driver參數(shù)

class Base(object):

  def __init__(self, driver):
        self.driver = driver

  def find(self, *loc):
        try:
             t = WebDriverWait(self.driver, 10).until(
                 lambda x: x.find_element(*loc))
             return t
        except:
             print("%s 頁面中不能找到 %s 元素" %self, loc)

class Fin_plus(Base):  # 子類繼承父類Base

  def __init__(self, driver):
        # 必須顯式調(diào)用父類的構(gòu)造方法,否則不會執(zhí)行父類構(gòu)造方法
        Base.__init__(self, driver)  
  1. super繼承:使用super需要繼承object對象,屬于新式類。super函數(shù)會返回一個super對象 ,這個對象負(fù)責(zé)進行方法解析,解析過程中會自動查找所有父類以及父類的父類。

優(yōu)勢:如果子類繼承了多個父類,它只需要使用一次super函數(shù)就可以。

Base 父類初始化帶有driver參數(shù)(與上述案例一致)

class Fin_plus(Base):  

   def __init__(self, driver, loc):  # 子類中擴展了loc參數(shù)

         super(Base, self).__init__(driver)  # 使用super函數(shù)調(diào)用父類的構(gòu)造方法

          self.loc = loc  # 定義loc參數(shù)

    def fin_plus(self):

          self.find(self.loc)  # find是Base 父類定義的一個方法

擴展后,這里調(diào)用子類Fin_plus,子類實例化時,需要傳 driver, loc兩個參數(shù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容