python - 在没有冗余代码/文档字符串的情况下转发/重定向 python 类中的方法/属性的最佳方法?

标签 python class oop forwarding

我有一个项目,其中包含一些模块,每个模块都包含一个类来完成各自的工作。然后我为用户提供了一个 API 类。 API 类实例化这些类,并且应该转发/重定向到那些正在做实际处理的人。我有以下问题:

  1. 如何在不重写在我看来是多余的代码的情况下进行转发?例如,Foo 是 API 类,Bar 是模块类,那么现在我写的是这样的:

    class Foo:
        def __init__(self, bar: Bar):
            self.bar = bar
        def name(self):
            return self.bar.name()
    

    我在Foo中明确写了name方法,它只返回Barname()。这不是多余的吗?是否有一种“自动”方式来转接电话?

  2. bar 类中,我会编写一些文档字符串。有没有办法将这些文档字符串“移植”到 API 类 Foo?在 Foo 中再次编写它们将是多余的并且难以维护。

最佳答案

您可以将bar.name 赋值给self.name。具有类的 __doc__ 属性的文档字符串也是如此:

class Foo:
    def __init__(self, bar: Bar):
        self.bar = bar
        self.name = bar.name
        self.__class__.__doc__ = bar.__class__.__doc__

关于python - 在没有冗余代码/文档字符串的情况下转发/重定向 python 类中的方法/属性的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69444593/

相关文章:

python : AttributeError: 'NoneType' object has no attribute 'append'

Python - 解析串行数据并查找特定字符串

python - Pandas:是否有通过提供索引标签列表来对行进行排序的 native 方法?

java - 在Java中访问引用类型数组的元素

c++ - 使用复制构造函数时,是否在复制构造函数之前初始化了类数据成员?

c# - 创建对象泛型类

javascript - PHP:通过点表示法访问嵌套对象属性

python - WordNetlemmatizer 错误 - 所有字母均已词形还原

.net - C#。检查 Type 是否为 .NET Framework,而不是我自己的类型

oop - 是否可以从特征中访问结构字段?