I have a superclass with several subclasses. Each subclass overrides the "solve" method with some a different algorithm for estimating the solution to a particular problem. I'd like to efficiently create an instance of each subclass, store those instances in a list, and then take the sum (or average) of the estimates that the subclasses give:
class Technique():
def __init__(self):
self.weight = 1
def solve(self, problem):
pass
class Technique1(Technique):
def __init__(self):
super()
def solve(self,problem):
return 1
class Technique2(Technique):
def __init__(self):
super()
def solve(self,problem):
return 6
class Technique3(Technique):
def __init__(self):
super()
def solve(self,problem):
return -13
testCase = 3
myTechniques = []
t1 = Technique1()
myTechniques.append(t1)
t2 = Technique1()
myTechniques.append(t2)
t3 = Technique1()
myTechniques.append(t3)
print(sum([t.solve(testCase) for t in myTechniques])
The code at the end feels very clunky, particularly as the number of subclasses increases. Is there a way to more efficiently create all of the instances?