我现在在编写一个自动化测试的框架,其中有一个Data模块是进行数据处理的,但是传入的原始数据可能会有多个模板,所以我现在是创建了一个BaseData作为抽象基类,然后根据不同的原始数据模板编写不同的子类来进行处理,请问抽象基类在Python中是否不推荐使用?是否更推荐鸭子类型?如果使用鸭子类型其他模块调用Data类时,我怎样知道里面是否有相应的处理方法呢?
这是抽象基类,定义了几个处理数据的抽象方法,没有定义实现方法
class BaseData(abc.ABC):
"""
测试数据基类,获取原始数据;
子类继承后根据data_key处理不同格式的数据;
"""
def __init__(self, data: List[tuple], data_key: Iterable):
"""
初始化
:param data: 原始测试数据,类型为namedtuple
"""
# 验证参数是否为空
if not data:
raise ValueError('测试数据不能为空{}'.format(data))
if not data_key:
raise ValueError('数据Key键不能为空')
# 初始化属性
self._data = data
self._data_key = list(data_key)
@property
@abc.abstractmethod
def test_number(self):
"""
测试编号
:return:
"""
return
@property
@abc.abstractmethod
def test_explain(self):
"""
测试说明
:return:
"""
return