假设以下情况。有一个基类包含一些数据和一个派生类,它假定数据现在有一些允许运行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方式吗?这个问题的答案可能是不同的设计模式,也可能是上面使用的模式的更好实现。