2010-07-16 6 views
0

이 클래스의 하위 클래스를 언 클럭하려 할 때 문제가 있습니다. 내가 그것을 unpickle 때, 물건은 거기에 없습니다. 뭐라 구요? 클래스 계정 :파이썬 클래스 풀기

이 클래스는 object를 상속 않습니다
def __init__(self, server, port, smtp_server, smtp_port): 
     self.server = server 
     self.port = port 
     self.smtp_server = smtp_server 
     self.smtp_port = smtp_port 

     self.save() 

    def save(self): 
     #save account for later loading 
     self.name = tkFileDialog.asksaveasfilename(title = "Save as..") 
     pickle.dump(self, open(self.name, "wr"))   
+0

아, 그래, unpickling 부분은이 모듈에 있으며 다른 모듈에서 호출됩니다. 네, 나쁘다는 거 알아. – LaserDude11

답변

1

?

어느 쪽이든 __getstate__을 덮어서 피클하고자하는 것을 지정할 수 있습니다. 그렇지 않으면 object을 상속하는 경우 보통 __dict__을 복사해야합니다.

+0

나는 그것이 주어진 줄 알았다. 나는 그것을 시도 할 것이다, 고마워. 보통, 파이썬은 내가 좋아하는 것을 안다 ... – LaserDude11

+0

아니, 작동하지 않았다. 그것은 여전히 ​​그것이 non-type이고, 속성을 가지고 있지 않다고 말합니다 ... – LaserDude11

+0

그래서 ... 지금 작동합니까? 그리고 그렇지 않다면 어떤 계급을 물려 받습니까? – Wolph

0

그래서 여기에 제가 생각한 방법이 있습니다. 추악한 피클 물건 (주석 참조)을 unpickling 클래스로 옮기고, 피클링 한 클래스를 가져오고, 작동하는 것처럼 보입니다.

+0

예, 작동합니다! – LaserDude11

+0

해결해줬으면 좋겠지 만 여기에 해결책을 게시했다면 다른 사람들도 그 혜택을 누릴 수 있습니다. – dalloliogm

+0

_pickle_을 사용하여 다른 형식의 serialization을 사용하기 시작한 이래로 지금은 어디에 있는지 잘 모르겠습니다. – LaserDude11