擅长:python、mysql、java
<p>您<em>可以</em>使用<code>BaseProcessing.__subclasses__()</code>来获取使用<code>BaseProcessing</code>作为基类的类的列表。我想,你可以这样做:</p>
<pre><code>for subclass in BaseProcessing.__subclasses__():
instance = subclass(data)
instance()
</code></pre>
<p>不过,总的来说,我倾向于使用更明确的东西。可能是这样的:</p>
<pre><code>class Pipeline:
def __init__(self, data):
self.data = data
self.processes = []
self.result = []
def register(self, cls):
self.processes.append(cls)
return cls
def run(self):
for cls in self.processes:
instance = cls(self.data)
result.append(instance())
pipeline = Pipeline(data)
@pipeline.register
class SimpleAlgorithm(BaseProcessing):
def do_algorithm(self):
print("Simple calculations")
@pipeline.register
class SplineAlgorithm(BaseProcessing):
def do_algorithm(self):
print("Using splines for calculation")
pipeline.run()
</code></pre>