python带driver参数的继承和重写init方法
1.父类中已经有init模块,子类继承父类后,无需再初始化(init),实例化子类时,会自动调用父类定义的init【父亲盖了一楼,儿子想造房子就不需要再盖一楼了】
【python带driver参数的继承和重写init方法】2.父类中已经有init模块,子类继承父类后需要扩展父类行为,需要子类重写init,子类重写init,实例化子类,就不会调用父类已经定义的init【父亲盖了一楼,儿子想造二楼,需要先继承一楼再建二楼-->重写】
重写init,要显示调用父类的init方法,有以下两种调用方式:案例带有初始化参数的父类
- 调用未绑定的父类构造方法
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)
- super继承:使用super需要继承object对象,属于新式类。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两个参数
推荐阅读
- Mac安装Chromedriver
- 基于微信小程序带后端ssm接口小区物业管理平台设计
- python学习之|python学习之 实现QQ自动发送消息
- 精神,带我走向人生的天堂!
- 逻辑回归的理解与python示例
- 带有Hilt的Android上的依赖注入
- python自定义封装带颜色的logging模块
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- 皮夹克
- 油菜花田的小路像绶带