python带driver参数的继承和重写init方法

1.父类中已经有init模块,子类继承父类后,无需再初始化(init),实例化子类时,会自动调用父类定义的init【父亲盖了一楼,儿子想造房子就不需要再盖一楼了】
【python带driver参数的继承和重写init方法】2.父类中已经有init模块,子类继承父类后需要扩展父类行为,需要子类重写init,子类重写init,实例化子类,就不会调用父类已经定义的init【父亲盖了一楼,儿子想造二楼,需要先继承一楼再建二楼-->重写】
重写init,要显示调用父类的init方法,有以下两种调用方式:案例带有初始化参数的父类

  1. 调用未绑定的父类构造方法
Base 父类初始化带有driver参数
class Base(object):def __init__(self, driver): self.driver = driverdef 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):# 子类继承父类Basedef __init__(self, driver): # 必须显式调用父类的构造方法,否则不会执行父类构造方法 Base.__init__(self, driver)

  1. super继承:使用super需要继承object对象,属于新式类。super函数会返回一个super对象 ,这个对象负责进行方法解析,解析过程中会自动查找所有父类以及父类的父类。
优势:如果子类继承了多个父类,它只需要使用一次super函数就可以。
Base 父类初始化带有driver参数(与上述案例一致)
class Fin_plus(Base):def __init__(self, driver, loc):# 子类中扩展了loc参数super(Base, self).__init__(driver)# 使用super函数调用父类的构造方法self.loc = loc# 定义loc参数def fin_plus(self):self.find(self.loc)# find是Base 父类定义的一个方法

扩展后,这里调用子类Fin_plus,子类实例化时,需要传 driver, loc两个参数

    推荐阅读