Почему функция не работает в классе? Почему это работает:def clean(text: str):
return text \
.replace('?', '') \
.replace("|", '') \
.replace('\"', '') \
.replace(' ', '') \
.replace(':', '') \
.replace('\\', '') \
.replace('/', '') \
.replace('>', '') \
.replace('<', '') \
.replace('"', '') \
.replace('+', '') \
.replace('*', '') \
.replace(' .', '')
...
class ParseText:
...
def save_text(self):
part = open('src/text/{}.txt'.format(clean(partName)), 'w', encoding="utf-8")
А это не работает:def clean(text: str):
strings = ['?', "|", '\"', ]
result = (text.replace(i, "") for i in strings)
result = str()
for i in strings:
print(i)
result = text.replace(i, '')
continue
return result
...
class ParseText:
...
def save_text(self):
part = open('src/text/{}.txt'.format(clean(partName)), 'w', encoding="utf-8")

21 Авг 2019 в 06:59
156 +1
0
Ответы
1

Функция не работает в классе потому, что при вызове метода format в строке 'src/text/{}.txt'.format(clean(partName)), передается аргумент clean(partName), который в данном случае обращается к функции clean, определенной вне класса ParseText. Во втором случае, когда функция clean определена внутри класса ParseText, вызов метода format будет искать функцию clean в рамках этого класса, что приводит к ошибке.

Чтобы исправить ситуацию, можно передавать аргумент функции clean явно, например:

def clean(text: str):
strings = ['?', "|", '\"', ]
result = text
for i in strings:
result = result.replace(i, '')
return result
class ParseText:
...
def save_text(self):
part = open('src/text/{}.txt'.format(clean(partName)), 'w', encoding="utf-8")

Таким образом функция clean будет вызываться с переданным в нее аргументом, вне зависимости от того, где она была определена.

20 Апр в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Название заказа не должно быть пустым
Введите email
Бесплатные доработки
Гарантированные бесплатные доработки
Быстрое выполнение
Быстрое выполнение от 2 часов
Проверка работы
Проверка работы на плагиат
Интересные статьи из справочника
Поможем написать учебную работу
Название заказа не должно быть пустым
Введите email
Доверьте свою работу экспертам
Разместите заказ
Наша система отправит ваш заказ на оценку 92 548 авторам
Первые отклики появятся уже в течение 10 минут
Прямой эфир