Staff не может наследоваться от Employee, это же очевидно.
Вот набросок:
class Employes(object):
def __init__(self, filename = 'emplyes.csv'):
self.filename = filename
self.items = {}
self.reset()
def reset(self):
self.clear()
if os.path.exists(self.filename):
data = csv.reader(open(self.filename), delimiter=';')
# TODO
# перегоняем данные в словарь self.item,
# словарь того вида, что я показывал выше
raise NotImplementedError('TODO csv reader')
def clear(self):
self.items.clear()
def save(self):
"""TODO
Используя csv записать содержимое словаря self.items в self.filename.
"""
raise NotImplementedError('TODO csv writer')
def add(self, name, appointment):
new_id = max(self.items.keys() or [0]) + 1
self.items[new_id] = name, appointment
def remove(self, emp_id):
self.items.pop(emp_id)
def filter(self, name_mask = '', app_mask = ''):
"""Новый словарь сотрудников, в имени которых содержится `name_mask`,
а в должности `app_mask`."""
filtered_employes = {}
for id, (name, app) in self.items.iteritems():
if name_mask in name and app_mask in app:
filtered_employes[id] = name, app
return filtered_employes
Как-то так. Другие программисты предложат тебе ещё тысячу вариантов.
p.s. В Employes.
filter нужно вообще то объект Employes возвращать, но это ты уже сам доделаешь.
p.p.s. Employes.
items вообще-то это скрытый (private или protected) атрибут, но я не стал здесь этого показывать (да и как-то не люблю имена вида
_items), т.е. доступ к нему извне противопоказан.
p.p.p.s. Ещё не помешает реализовать методы
__getitem__,
__len__,
__iter__ и т.п.
..bw