Сейчас тоже пытюсь вникнуть в классы. Начал решать на первый взгляд тривиальную задачу, но мягко говоря застряд :-\
Пока получилось примерно вот что:
'''This is command line adress book'''
import cPickle as p
class Person:
book={}
def __init__(self,name,tel,adress):
#In this place we initialize new class
self.name=name
self.tel=tel
self.adress=adress
print 'Initialized new value...%s' %self.name
Person.book[name]='Name: "%s"\nTel: "%s"\nAdress: "%s"' %(self.name,self.tel,self.adress)
def show(self,target):
#Intitialize new class(Person) method(show)
print Person.book[target]
def showall(self):
for i in Person.book:
print '>>>',i
def howMany(self):
print 'In my adress book',len(Person.book),'person'
def __del__(self):
print '%s deleted from adress book' %self
del Person.book[self.name]
if len(Person.book) == 0:
print 'Adress book empty.'
else:
print 'In adress book are still %d people left.' % len(Person.book)
def save(self,filename):
k='/home/funtik/'+str(filename)+'.txt'
f=file(k,'w')
p.dump(Person.book,f)
f.close()
def load(self,filename):
k='/home/funtik/'+str(filename)+'.txt'
f=file(k,'w')
new_loc=p.load(f)
new_loc=Person.book
print Person.book
f.close
getstarted=Person(None,None,None)
getstarted.load(input('->'))
Запускаю, заполняю, закрываю, проверяю файл, данные сохранены.
Закрывая, опять запускаю, получаю ошибку(IOE), проверяю - файл пустой. Немогу понять, почему в файл записывается пустой словарь, при старте же невызывятся метод save, пока book, есчо пустой.
Да и общее ощущение что код ка-който ужасно кривой у меня пока получается.