zoukankan      html  css  js  c++  java
  • python学习笔记2--子类父类继承时的参数传递

    记录一下一个真实例子吧,在写自动化测试框架时,声明了一个webpage类作为selenium基类,存放一些常用的页面方法。

    然后声明了一个登录类(基类),登录类继承自基类。

    首先webpage是这么写的

    class WebPage(object):    """selenium基类"""
    def __init__(self, driver):
    # self.driver = webdriver.Chrome()
    self.driver = driver
    self.timeout = 20 # 查找元素的超时时间
    self.wait = WebDriverWait(self.driver, self.timeout)
      def input_text(self, locator, txt):
      """输入(输入前先清空)"""
       sleep(0.5)
       ele = self.find_one_element(locator)
       ele.clear()
       ele.send_keys(txt)
       log.info("输入文本:{}".format(txt))

    如上,基类需要传入一个driver的参数,一般来说的都是传入一个谷歌 的driver,同事基类还实现了一个输入文本的方法
    子类登录类代码如下class Login(WebPage): """登录类"""

    def input_loginName(self, content):
    """输入用户名"""
    self.input_text(search['账号'], txt=content)
    sleep()

    def input_loginPassword(self, content):
    """输入密码"""
    self.input_text(search['密码'], txt=content)
    sleep()

    登录类继承自基类,并且定义了两个方法输入用户名和密码,其中实现过程用到了基类的方法输入文本。
    我们去实例化一个登录类的时候,要怎么做传参呢?细细想想,是用的 Login(webdriver.Chrome())的方式去实例化,为什么需要传入参

    ,是因为虽然login类不需要参数,但是他爸爸需要一个参数driver,所以实例化的时候也是需要穿
    进去的。
    那么我就思考了一下,如果父类有要传的参数,子类也有要传的参数,实例化子类的时候需要怎么实例呢,查阅资料发现
    需要用到
    super(子类, self).__init__(父类参数
    的方式进行传参,
    具体用法如下,假设有动物类和狗类,各有一个参数

    class Animal(object):
    def __init__(self, lx):
    self.driver = lx

    def set_run(self):
    print(self.driver)


    class dog(Animal):
    def __init__(self, xw, lx):
    super(dog, self).__init__(lx)
    self.xe = xw

    def set_r(self):
    self.set_run()


    c = dog('pao1', 'zou1')
    c.set_r()

    则如上实现实例化,pao1 传参将赋值给dog类的xe变量,而zou1 将赋值给 父类的driver变量,由于子类可以使用父类的方法,
    则最后调用结果为 zou1
    不难看出,如果需要在子类中调用init方法在实例化时给子类赋值,则必须调用
    super(子类, self).__init__(父类参数)
    写在子类的init方法中。


  • 相关阅读:
    首页三级菜单显示
    mysql引擎(转)
    nginx配置虚拟主机
    macos10.9 配置nginx,php-fpm
    排序算法 java实现
    Struts清楚session方法
    No result defined for action and result input的错误
    java throw throws
    try catch finally中return语句与非return语句的执行顺序问题
    java操作Excel
  • 原文地址:https://www.cnblogs.com/baxiaobin/p/13402989.html
Copyright © 2011-2022 走看看