2013-06-07 5 views
1

Я пытаюсь поместить метод в один из моих классов, который позволит мне рассортировать и распаковывать файлы. Так, например, у меня естьpickle error при вызове в классе

import pickle 

class SomeClass: 

    def otherMethods: 
     pass 

    def save_to_file(self, filename, file_to_save): 
     with (filename,'wb') as output: 
      pickle.dump(file_to_save,output,pickle.HIGHEST_PROTOCOL) 
     print("Data has been saved.") 

Теперь, когда я создаю экземпляр этого «SomeClass», я ожидаю, чтобы быть в состоянии назвать, как следует из терминала ...

myfile = [1,2,3] # or anything else 
SomeClass.save_to_file('myfile.pk',myfile) 

Однако, то, что брошено является:

'AttributeError: __exit__' 

Я видел несколько различных должностей людей, имеющих трудность с подобными прецедентами, но я не мог понять, как они применяются в моей ситуации. Помощь будет высоко оценена.

+0

Вы вызывали 'SomeClass.save_to_file' или' SomeClassObj.save_to_file'? – Marcus

+0

Я создал экземпляр SomeClass ... i.e a = SomeClass(), тогда a.save_to_file (...) – Flaminator

+0

может упростить оператор 'with' – donfede

ответ

4

open отсутствует:

with open(filename,'wb') as output: 

с утверждением ожидает контекста менеджера с __enter__ и __exit__ методов и повышает AttributeError, потому что кортеж (filename,'wb') не имеет их.

Смежные вопросы