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

如何自动创建所有成员函数为空实现的类克隆?

自动生成空实现克隆类的方案

要自动创建原类C的克隆类Cc(所有成员函数为空实现),可以通过编写工具函数遍历原类方法并生成空实现,最终组装出目标克隆类。以下是具体实现:

实现思路

  1. 遍历原类的所有属性,筛选出用户定义的可调用方法(排除__init__这类Python特殊方法);
  2. 为每个方法创建空实现函数(接收任意参数但不执行任何逻辑);
  3. 动态生成新类,将这些空实现方法绑定到新类中。

代码实现

工具函数定义

def create_no_op_clone(cls):
    no_op_methods = {}
    # 遍历原类属性,筛选出用户定义的方法
    for name in dir(cls):
        if name.startswith('__'):
            continue
        attr = getattr(cls, name)
        if callable(attr):
            # 定义空实现函数
            def no_op(*args, **kwargs):
                pass
            no_op_methods[name] = no_op
    # 动态生成克隆类,命名为原类名+Clone
    clone_cls = type(f"{cls.__name__}Clone", (object,), no_op_methods)
    return clone_cls

使用示例

假设原类C定义如下:

class C:
    def f(self):
        print("执行C类的f方法")
    
    def g(self, value):
        print(f"执行C类的g方法,参数:{value}")

生成克隆类并应用到目标函数:

# 生成C的空实现克隆类Cc
Cc = create_no_op_clone(C)

# 定义使用默认参数的函数
def f(p = Cc()):
    p.f()
    p.g("测试参数")

# 测试调用
f()  # 无任何输出,因为Cc的方法是空实现
f(C())  # 输出:执行C类的f方法;执行C类的g方法,参数:测试参数

扩展说明

  • 如果需要克隆类继承原类(保留原类的非方法属性),可以将动态生成类的基类改为原类:
    clone_cls = type(f"{cls.__name__}Clone", (cls,), no_op_methods)
    
  • 该方案会自动处理原类继承来的方法,只要是可调用的成员,都会被替换为空实现。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 03:24:25