В Python может ли конструктор взять метод другого класса в качестве аргумента?Конструктор, который принимает метод
Я слышал, что вы можете сделать что-то подобное, но этот пример не работает (в настоящее время, я получаю «модуль» объект не вызываемая ошибка):
class GeneticAlgorithm():
def __init__(self, population, fitness, breed, retain = .3, weak_retain = .15) :
self.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
И где Solver создается
def main():
S = Solver(fitness, breed, 35)
print(S.solve())
if __name__ == '__main__':
main()
Пожалуйста, разместите код, который действительно вызывает ошибку. –
Для начала: 1. Ваш отступ выключен ('def' должен быть отступом, если его часть класса GeneticAlgorithm). 2. Генетический алгоритм должен наследовать от объекта. – Gerrat
Короче говоря, да, это может (если бит iffy из-за аргумента 'cls' /' self' в методе), но нам нужен код и ошибка, чтобы узнать, почему ваш код неверен – Izkata