Pythonでは、コンストラクターは別のクラスのメソッドを引数として取ることができますか?
このようなことができると聞いたことがありますが、この例は機能していません (現在、「モジュール」オブジェクトは呼び出し可能ではありませんというエラーが発生しています)。
class GeneticAlgorithm ():
def __init__(self, population, fitness, breed, retain = .3, weak_retain = .15 ) :
self.fitness = fitness
ここで、fitness は別の場所で定義された関数であり、関数が定義されているクラスをインポートしていることに注意してください。
編集:実際にエラーを生成するコードは次のとおりです
class Solver( ):
def __init__( self, fitness, breed, iterations ):
self.T = Problem()
self.fitness = fitness
self.breed = breed
self.iterations = iterations
def solve( self ):
P = self.T.population(500)
GA = GeneticAlgorithm(P, self.fitness, self.breed) # problem here
Traceback (most recent call last):
File "C:\Users\danisg\Desktop\Other\Problem.py", line 128, in <module>
main()
File "C:\Users\danisg\Desktop\Other\Problem.py", line 124, in main
t = S.solve()
File "C:\Users\danisg\Desktop\Other\Problem.py", line 74, in solve
GA = GeneticAlgorithm(P, self.fitness, self.breed)
TypeError: 'module' object is not callable
ソルバーが作成される場所
def main():
S = Solver(fitness, breed, 35)
print(S.solve())
if __name__ == '__main__':
main()