现在我使用参数对象的类来继承
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/