Вот мой пример, проверьте его:
class Messenger:
sms_store = [{'title': 'test', 'text': 'Some text here', 'readed': False}]
def __init__(self):
self.greeting()
self.prompt()
def greeting(self, *arg, **kw):
print('Hello there!')
print('In your inbox {} messeges, ({} is new)'.format(
len(self.sms_store), len(list(filter(bool, [not x.get('readed') for x in self.sms_store])))))
def prompt(self):
while True:
command, *args = input("\nWhat would you like to do?\n> ").split()
if command == 'quit':
break
elif hasattr(self, command):
getattr(self, command)(*args)
else:
print('>>> Wrong command! <<<')
def list(self, *arg, **kw):
print('Messeges:')
for n, sms in enumerate(self.sms_store):
print('Num:', n, 'Readed:', sms.get('readed'), 'Title:', sms.get('title'))
def get(self, sms_num, *arg, **kw):
if not sms_num or int(sms_num) >= len(self.sms_store):
print('>>> Wrong msg Number! <<<')
else:
sms = self.sms_store[int(sms_num)]
print(sms.get('title'))
print(sms.get('text'))
self.mark_readed(int(sms_num))
def mark_readed(self, sms_num, *arg, **kw):
self.sms_store[sms_num]['readed'] = True
def add_sms(self, title, *arg, **kw):
self.sms_store.append({'title': title, 'text': ' '.join(arg), 'readed': False})
print('Msg added!')
def remove_sms(self, sms_num, *arg, **kw):
if not sms_num or int(sms_num) >= len(self.sms_store):
print('>>> Wrong msg Number! <<<')
else:
self.sms_store.pop(int(sms_num))
if __name__ == "__main__":
m = Messenger()
Выход:
~ > $ python3 test.py
Hello there!
In your inbox 1 messeges, (1 is new)
What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test
What would you like to do?
> add_sms New_sms Some text is here!
Msg added!
What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test
Num: 1 Readed: False Title: New_sms
What would you like to do?
> get 1
New_sms
Some text is here!
What would you like to do?
> list
Messeges:
Num: 0 Readed: False Title: test
Num: 1 Readed: True Title: New_sms
What would you like to do?
> remove_sms 0
What would you like to do?
> list
Messeges:
Num: 0 Readed: True Title: New_sms
What would you like to do?
> close
>>> Wrong command! <<<
What would you like to do?
> quit
~ > $