Почему функция не работает в классе? Почему это работает:def clean(text: str):
return text \
.replace('?', '') \
.replace("|", '') \
.replace('\"', '') \
.replace(' ', '') \
.replace(':', '') \
.replace('\\', '') \
.replace('/', '') \
.replace('>', '') \
.replace('

21 Авг 2019 в 06:59
179 +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 Апр 2024 в 13:10
Не можешь разобраться в этой теме?
Обратись за помощью к экспертам
Гарантированные бесплатные доработки в течение 1 года
Быстрое выполнение от 2 часов
Проверка работы на плагиат
Поможем написать учебную работу
Прямой эфир