nerezus
(предложенный вариант не пашет):
import cPickle as pickle
class Foo():
…
def load(self):
try:
self = pickle.loads(load(self.dump_filename))
return True
except:
return False
Этот код и не должен работать - в метод передается переменная self (которая принципиально ни чем не отличается от других переменных, передаваемых в качестве параметра), далее идет переопределение этой переменной, и на этом все. Это значит, что созданный объект как был, так и остался, но далее (и только в рамках текущего метода!), под именем self, будет существовать уже другой, вновь созданный объект.
>>> class B(object):
… def do(self):
… print id(self)
… print id(a)
… self = a
… print id(self)
…
>>> b = B()
>>> b.do()
18349744
18349712
18349712
Без специальных выкрутасов и через-голову-штаны-надеваний, можно только что-нибудь в духе foo = foo.load(), хотя уже в таком случае, очевидно, статический метод более логичен. Но тем не мене:
>>> import datetime
>>> dt = datetime.datetime.now()
>>> print dt
2008-04-21 16:40:43.924000
>>> dt = dt.now()
>>> print dt
2008-04-21 16:40:57.548000