修改父类对象的属性不会影响子对象

时间:2018-12-17 18:47:58

标签: python-3.x inheritance pathos

这是我的第一篇文章。我已经为这个问题苦苦挣扎了一段时间,希望能对您有所帮助。一段时间以来,我的Pythoning也一直处于不受限制的状态,我对所有批评和启发都敞开心open。

我正在开发执行模型(Bar)的Python库。理想情况下,用户只需要实例化Bar对象即可运行模型。子类Foo创建了许多Foos中的一种,这是计算密集型的,因此需要并行处理。 Foo将具有同级,而Bar也将定义同级。 Foo最终可能会有更多输入,这就是为什么我需要悲痛支持多个输入的原因。

from pathos.multiprocessing import ProcessingPool as Pool
import pandas as pd
import numpy as np

class Bar:

    """
    Bar is the parent class for Foo and other children
    """

    def __init__(self, saveResult = False):

        self.saveResult = saveResult
        self.listWithFooNumers = [1,2,3]

    def makeFoos(self):
        Pool().map(Foo, self.listWithFooNumers)


class Foo(Bar):

    """
    Foo is a class used to create many Foos when Bar is executed.
    """

    def __init__(self, FooNumber):

        super().__init__()

        resultDF = pd.DataFrame()
        resultDF["values"] = np.full(10,FooNumber * 2)

        if self.saveResult is True:
            resultDF.to_csv(str(FooNumber) + ".csv")

这就是我希望执行代码的方式:

Bar(saveResult = True).makeFoos()

我的问题:

1)如何在上面的行中获得所需的行为(保存三个csv)?

2)什么是最佳/更好的做法?

当前,该代码仅在我对Bar kwarg进行硬编码时才有效:saveResult = True。

0 个答案:

没有答案