Python:从基类方法返回派生类的实例

时间:2015-06-18 23:52:20

标签: python

假设以下情况。有一个基类包含一些数据和一个派生类,它假定数据现在有一些允许运行algorithm的附加特性。基类还有一种算法,它以某种通用方式处理数据并返回作为处理结果的副本。现在,该处理不会影响数据的特定特性,因此我们可以安全地假设返回的值应该是派生类的类型。

我目前的实施:

class GenericData:

    def __init__(self, d):
        self._d = d

    def process(self):
        # Process the data in a way that is compatible
        # with any specialization. Then, return an instance
        # of the specific derived class.
        return type(self)(some_processing(self._d))


class SpecificData(GenericData):

    """This class is just a gathering of algorithms that make
       certain assumptions about d."""

    def __init__(self, d):
        super().__init__(d)

    def algorithm():
        # Do some stuff assuming certain characteristic of data
        pass

我的问题是:这是处理这种情况的好/ Pythonic方式吗?这个问题的答案可能是不同的设计模式,也可能是上面使用的模式的更好实现。

0 个答案:

没有答案