Почему я получаю ошибку атрибута __enter__ для матрицы? - PullRequest
0 голосов
/ 06 ноября 2019
def save_list():  
  f = open('data.txt', 'w')

  ii = 0

  with itemMatrix[ii] as item:

    f.write(item + '\n')

    ii += 1

Этот код постоянно выдает мне ошибку: атрибут error введите в строке 5 (с itemMatrix [ii] как item:)

почему это происходит и какя могу это исправить? Если вам понадобится больше кода, дайте мне знать.

Спасибо за ваше время!

Ответы [ 2 ]

1 голос
/ 06 ноября 2019
def save_list():
    with open('data.txt', 'w') as f:
        for item in itemMatrix:
            f.write(f"{item}\n")

f-строками для форматирования элементов вместе с новой строкой.)

0 голосов
/ 06 ноября 2019

вы, вероятно, хотели написать for item in itemMatrix[ii]:

оператор with использует протокол управления контекстом. это примерно соответствует этому.

with obj as instance:
  body(instance)

# is syntactical suger for
instance = obj.__enter__()
try:
    body(instance)
except BaseException as e:
    obj.__exit__(type(e), e, stacktrace)
else:
    obj.__exit__(None, None, None)

, если вы хотите использовать оператор with, тогда itemMatrix[ii] должен иметь метод enter и метод exit . см https://www.python.org/dev/peps/pep-0343/

...