You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确编写关联类?实现A、B类共享模型测试方法

解决方案:提取公共测试方法到父类,让A、B继承

核心思路是把test1_on_model、test2_on_model这类重复的测试逻辑抽离到一个公共父类中,让类A和类B都继承这个父类,这样两个类的实例就能直接调用这些测试方法,无需重复编写代码。

1. 定义公共测试父类

创建一个包含所有测试方法的基类,只要子类实例拥有self.model属性,就能直接使用这些方法:

class ModelTester:
    def test1_on_model(self):
        ### 这里写通用的test1测试逻辑,直接访问self.model即可
        print(f"执行test1,测试模型: {self.model}")
    
    def test2_on_model(self):
        ### 这里写通用的test2测试逻辑
        print(f"执行test2,测试模型: {self.model}")

2. 让A、B类继承公共父类

修改类A和类B,继承ModelTester,同时保留各自的初始化逻辑:

def process_data(data):
    ### 数据处理逻辑,返回Model对象
    return Model()  # 假设Model是已定义的目标类

class A(ModelTester):
    def __init__(self, data) -> None:
        self.model = process_data(data)

class B(ModelTester):
    def __init__(self, model) -> None:
        self.model = model

3. 调用测试方法

现在A和B的实例都能直接调用测试方法:

# 测试类A
raw_data = {"key": "value"}
a = A(raw_data)
a.test1_on_model()
a.test2_on_model()

# 测试类B
preprocessed_model = process_data(raw_data)
b = B(preprocessed_model)
b.test1_on_model()

4. 子类扩展测试方法(可选)

如果某个子类需要在通用测试逻辑基础上添加个性化步骤,可以重写方法并通过super()调用父类的通用逻辑:

class A(ModelTester):
    def __init__(self, data) -> None:
        self.model = process_data(data)
    
    def test1_on_model(self):
        # 先执行父类的通用测试
        super().test1_on_model()
        # 添加类A特有的测试步骤
        print("执行类A专属的额外测试逻辑")

内容的提问来源于stack exchange,提问作者Mirko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.04 13:06:05