Я довольно новичок в кодировании, и я действительно запутался в том, как вызывать одну функцию из другой. Я пытаюсь передать атрибут экземпляра в качестве аргумента, но продолжаю получать ошибку имени для getVal. Это проблема с функцией getVal или аргумент, который я пытаюсь передать? «self.Volume» - это список чисел, а «self.num» - список двоичных чисел.

def getVal(self, solution):
    return [self.volume[i] for i in range(10) if solution[i]] 

def fitness(self): 
    print(getVal(self.num))
0
J French 16 Май 2020 в 20:40

3 ответа

Если это внутри класса, то вы должны обратиться к методу через self.getVal(). В Python экземпляр передается в качестве первого аргумента, если вы вызываете его метод, который по соглашению называется self. Таким образом, чтобы вызвать метод, вы должны либо выполнить ClassName.getVal(self, self.num), либо self.getVal(self.num).

4
WeavingBird1917 16 Май 2020 в 17:44

Близко. Вы должны убедиться, что поставили self. перед вызовами функции класса. и нет необходимости передавать self.num в getVal, вы можете просто вызвать его изнутри getVal

def getVal(self):
    return [self.volume[i] for i in range(10) if self.num[i]] 

def fitness(self): 
    print(self.getVal())
3
dwalter 16 Май 2020 в 17:45

Поскольку getVal() и fitness() являются функциями класса, их необходимо вызывать с помощью self.:

def fitness(self): 
    print(self.getVal(self.num))
5
Gal 16 Май 2020 в 17:43