Как вы добавляете любую переменную экземпляра, self.func = func
:
class Objective():
def __init__(self, function):
if isinstance(function, str):
def func(x): # no need for self
return eval(function, locals())
self.func = func # here
elif callable(function):
self.func = function
def __call__(self, x):
return self.func(x)
Обратите внимание, вам не нужно self
в вашем определении func
. Также обратите внимание, что вы нигде не использовали анонимную функцию. Вы использовали нормальное определение функции.
Наконец, (хотя вы, вероятно, не должны этого делать), вам нужно получить x
в пространствах имен, доступных для eval
, так что-то вроде:
return eval(function, locals())
Ваш вопрос несколько неясен. Если вы хотите удалить все повторяющиеся строки из текстового файла, вы можете сделать что-то вроде этого:
cat file.txt | sort | uniq
Так как исходный вопрос ссылался на Cygwin , который является специфическим для Windows, я упомяну, что ответ Луиса работает так же хорошо, используя Утилиты GNU для Win32 sort
. Я использую порты GNU от USB-ключа, когда я работаю на компьютере, на котором я не хочу устанавливать Cygwin, или загрузка и установка Cygwin кажутся слишком тяжелым решением проблемы, которую я пытаюсь решить.