python - 如何在 Python 中实现 'Parameter Object' 重构?

标签 python inheritance refactoring parameter-object

现在我使用参数对象的类来继承

class A():
    def __init__(self,p1,p2):
        self.p1, self.p2 = p1, p2

class B(A):
    def __init__(self,b):
        self.p1, self.p2 = b.p1, b.p2

这消除了使用代码而不是类代码本身的荒谬性。所以,我想做 C++ 的事情,像这样将参数对象传递给初始化列表

class A { 
    int p1,p2; 
}
class B : public A { 
    B(const A& a) : A(a) {} 
}

我可以在 Python 中执行此操作吗?具体来说,我可以通过在子类中以某种方式调用它的 __init__ 来设置父类的属性吗? - 从阅读“Dive into Python”我猜我可以做到这一点,因为对象已经在 __init__ 被调用时构建了。

或者,也许有一些不同的方法来实现 parameter object refactor在 Python 中(我只是想强制使用 C++ 技术)?

最佳答案

一般来说,您可能不需要参数对象重构技术。 Python 在标准库中有几个集合,它们已经具有参数对象重构将提供的核心优势。

此外,像参数对象设计模式这样的重构的成本/ yield 分析与 C++ 明显不同。例如,如果没有静态编译,对象创建和成员查找的开销要大得多。参数对象模式的基本情况是为相关字段提供命名空间,这在 Python 中可以通过字典简单地完成。

如果您需要以与分组数据相关的方法的形式进行某种模型操作,则该模式在 Python 中具有更大的值(value),但即便如此,像“属性”这样简单且廉价的机制也可以解决对成员属性的操作需求.

通过对问题空间进行更详细的描述,我们可能可以帮助评估这种重构是否有益,但很可能您在使用 Python 时最好不要使用该设计模式。

关于python - 如何在 Python 中实现 'Parameter Object' 重构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1995622/

相关文章:

java - Java重构练习

javascript - 你能在 React 组件类中添加一个外部函数作为方法吗?

python - Django Rest Framework中的AuthToken : non_field_errors

python - 查找工具/脚本/子目录

android studio 3 beta 4.无法进行重构

java - 子类型的构造函数

python - 绕过 Python 2.7 中的构造函数

python - Permission_classes = [A, B]、permission_classes = [A & B] 之间有区别吗?

python - tail -f 登录服务器,处理数据,然后通过twisted服务给客户端

java - 从多个类继承?