最新消息:20210917 已从crifan.com换到crifan.org

【技术问答】Python函数继承和重复初始化问题

Python crifan 460浏览 0评论
Q:
请教下各位,我们使用python写自动化测试。现在遇到问题:Class A是最基本的类,主要用于底层硬件接口的访问 Class B是设备的一个模块,需要继承Class A Class C是设备的另一个模块,也需要继承Class A Class D是设备总的类,需要继承Class B和ClassC

最终测试时,主要是实例化class D。但是因为Class D继承了B/C,相当与A被实例化了2次。而A是底层驱动,和硬件相关,不允许实例化两次,会有冲突

现在我想的办法是B继承A,C继承B,D继承C。这样能暂时解决。不知道大家有没有更好的办法?
需求:
我们目前是测试的一款芯片,读写芯片寄存器是通过电脑的串口实现的,我们写了一个class封装了硬件串口。芯片有多个模块,举例:蓝牙模块、wifi 模块。那蓝牙模块相关的function、寄存器封装了一个类(继承了上面说的串口类),同样,wifi模块也封装了一个类。这样的好处是,各个模块的负责人只需要修改自己模块的类,测试自己的类,不需要涉及到其他模块。

但到了芯片的系统级别测试,同事需要将所有的模块都整合到一起,就需要同时使用蓝牙模块类和wifi模块类,这就涉及到了硬件串口被两个模块同时调用的情况。但这是不允许的。
A:
以我的浅显理解 可以用 抽象类 串口类
class SerialPort
    def read():
        pass


    def wright():
        pass


然后 蓝牙和wifi 分别实现这个 串口类


def Bluetooth(SerialPort):
    def read():
        xxx


    def wright():
        yyy


def WiFi(SerialPort):
    def read():
        aaaa


    def wright():
        bbbb
参考资料:
8.12 定义接口或者抽象基类 — python3-cookbook 3.0.0 文档
python–接口类与抽象类 – 知乎
abc — 抽象基类 — Python 3.8.11 文档
Python为什么要用抽象类(abc模块)?
https://www.cnblogs.com/marsggbo/p/12119370.html

转载请注明:在路上 » 【技术问答】Python函数继承和重复初始化问题

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
92 queries in 0.181 seconds, using 23.35MB memory