2010-02-27 3 views

답변

5

__getstate____setstate__과 함께 문제를 해결하는 here의 예가 있습니다. picklable 객체없는 인스턴스 속성을 처리 할 수 ​​

+1

빠른 손가락 : P – anijhaw

+0

고정 링크 : http://docs.python.org/2/library/pickle.html#example – WGH

26

한 가지 방법은 클래스 인스턴스의 상태를 수정하기위한 특별한 방법을 사용할 사용하는 것입니다 다시 GetState()와 setState를(). 여기에 예제 푸의 인스턴스 절인되어

class Foo(object): 

    def __init__(self, value, filename): 
     self.value = value 
     self.logfile = file(filename, 'w') 

    def __getstate__(self): 
     """Return state values to be pickled.""" 
     f = self.logfile 
     return (self.value, f.name, f.tell()) 

    def __setstate__(self, state): 
     """Restore state from the unpickled state values.""" 
     self.value, name, position = state 
     f = file(name, 'w') 
     f.seek(position) 
     self.logfile = f 

, 파이썬은 인스턴스의 다시 GetState() 메서드를 호출하는 경우에만 값이 반환 피클 것이다. 마찬가지로, unpickle 처리 중에 Python은 unpickled 값을 인스턴스의 setstate() 메소드의 인수로 제공합니다. setstate() 메소드 안에서 우리는 절인 한 이름과 위치 정보를 기반으로 파일 객체를 다시 만들 수 있으며 파일 객체를 인스턴스의 logfile 속성에 할당 할 수 있습니다.

참조 : 처음 http://www.ibm.com/developerworks/library/l-pypers.html

관련 문제