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

如何让Python类A的所有方法自动转发至内部ele对象的对应方法?

解决方案

可以利用Python的__getattr__特殊方法实现自动方法转发,无需手动逐个实现ele的方法,也不需要继承。

修改后的类A代码如下:

class A:
    def __init__(self, ele):
        self.ele = ele
    
    def __getattr__(self, name):
        # 当访问A实例不存在的属性/方法时,转发给self.ele处理
        return getattr(self.ele, name)

原理说明

__getattr__是Python的内置特殊方法,只有当访问的属性或方法在当前实例中不存在时,才会被触发执行。我们在这个方法里把请求转发给self.ele,这样调用A实例的任意方法(只要ele具备该方法),都会自动转向调用ele对应的方法。

使用示例

假设我们有一个包含目标方法的类B:

class B:
    def fun(self):
        print("调用了B类的fun方法")
    
    def calculate(self, num):
        return num * 3

实际调用时:

b_instance = B()
a_instance = A(b_instance)

a_instance.fun()  # 输出:调用了B类的fun方法
print(a_instance.calculate(4))  # 输出:12

注意事项

  • 如果类A自身定义了和ele同名的方法,会优先调用A自己的方法(因为__getattr__只在找不到属性时才生效)。
  • 这种方式不仅支持方法转发,对ele的属性访问也同样有效,比如a_instance.some_attr会自动返回b_instance.some_attr(如果ele有这个属性的话)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:06:02