Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2022, 19:50   #1
melchiorxd
Новичок
Джуниор
 
Регистрация: 28.05.2022
Сообщений: 1
По умолчанию Class Phone

Помогите, пожалуйста, с созданием класса телефон

Класс Phone имеет публичный атрибут класса global_phone_list. В нем содержится словарь, в котором соответствующий объект номер телефона в качестве ключа.
- Объекты класса Phone также содержат строго приватные атрибуты __phone_number, __is_hidden_number и __history.

__phone_number содержит номер телефона в виде строки, и __is_hidden_number - True, если это секретный номер (номер не отображается при звонках) и False в противном случае.

__history - это список, в котором хранятся все вызовы. В нем есть вход для каждого звонка, который содержит номер вызывающего/вызываемого телефона (или значение "privat" для входящих звонков с секретного номера).

- __init__(self, phone_number: str, hidden_number: bool): ожидает номер телефона в виде строки и параметр в виде строки и информацию (в виде bool) о том, является ли это секретным числом. Эти две части информации хранятся в соответствующих частных атрибутах, а список вызовов (история) инициализируется как пустой список. Независимо от того, является ли номер секретным или нет, в global_phone_list создается соответствующая запись (можно считать, что номер телефона еще не используется).

- get_phone_number(self) -> str: возвращает строку 'hidden', если номер телефона является секретным. телефона - секретный номер, а в противном случае - номер телефона.

- extend_history(self, number: str) -> None: сохраняет номер строки в новой записи в конце __history, таким образом документируя вызов.

- receives_call(self, calling_phone) -> None: передается объект вызывающего телефона calling_phone. Метод запрашивает номер телефона звонящего (используя get_phone_number), заносит звонок в свой собственный список вызовов (используя extend_history), и печатает короткое сообщение о вызове.
Идея заключается в том, что это сообщение имитирует дисплей вызываемого телефона. Вы можете сами выбрать точное отображение, но оно должно содержать номер вызываемого телефона. номер телефона вызываемого абонента, а также номер вызывающего абонента, как его видит устройство вызываемый телефон. Простым примером может быть [122] incoming call: 133 или [122] incoming call: hidden, если вызов поступает с секретного номера.

- make_call(self, number: str) -> None: выполняет вызов. Если номер телефона номер зарегистрирован в списке global_phone_list, соответствующий телефон будет вызван (путем вызова метода receive_call соответствующего объекта-телефона; вызывающим объектом является вызывающий объект передается в качестве аргумента посредством self). Впоследствии звонок вносится в список вызовов (с помощью extend_history). Если номер неизвестен, печатается только "XXXXXXXXX".

- show_call_history(self) -> None: выводит список вызовов.
Выход можно выбрать произвольно. Однако должно быть ясно, к какому телефон (номер телефона), к которому принадлежит список вызовов, каждая запись списка должна быть выведена в формате линия, и номер телефона другого телефона должен быть напечатан. (или "скрытый", как хранится в списке вызовов).

Код:
class Phone:
 
    global_phone_list = dict()
 
    def __init__(self, phone_number: str, hidden_number: bool):
        self.phone_number = phone_number
        self.hidden_number = hidden_number
        global_phone_list = dict.fromkeys(phone_number[, hidden_number])
 
 
    def get_phone_number(self) -> str:
        if hidden_number == False:
            return phone_number
        else:
            return f'hidden'
 
    def extend_history(self, number: str) -> None:
    def receives_call(self, calling_phone) -> None:
    def make_call(self, number: str) -> None:
    def show_call_history(self) -> None:
 
 
def phone_partial_tests() -> None:
  
    print('\n__init__():')
    # phone1 = Phone('+431234', False)
    # print(phone1.__dict__)
    # print(Phone.global_phone_list)
    #
    # phone2 = Phone('+431007', True)
    # print(phone2.__dict__)
    # print(Phone.global_phone_list)
    #
    # print('\nget_phone_number():')
    # print(phone1.get_phone_number())
    # print(phone2.get_phone_number())
    #
    # print('\nextend_history:')
    # phone1.extend_history('+4311707')
    # print(phone1.__dict__['_Phone__history'])
    # phone1.extend_history('hidden')
    # print(phone1.__dict__['_Phone__history'])
    # phone2.extend_history('not a number')
    # print(phone2.__dict__['_Phone__history'])
    #
    # print('\nreceives_call():')
    #
    # phone3 = Phone('+4311000', False)
    # phone4 = Phone('+4312000', True)
    #
    # phone4.receives_call(phone3)
    # print(phone4.__dict__['_Phone__history'])
    #
    # phone3.receives_call(phone4)
    # print(phone3.__dict__['_Phone__history'])
    #
    # print('\nmake_call():')
    #
    # phone5 = Phone('192.097', False)
    # phone6 = Phone('SS2022', True)
    #
    # phone5.make_call('SS2022')
    # print(phone5.__dict__['_Phone__history'])
    # print(phone6.__dict__['_Phone__history'])
    #
    # phone6.make_call('192.097')
    # print(phone5.__dict__['_Phone__history'])
    # print(phone6.__dict__['_Phone__history'])
    #
    # phone5.make_call('unknown')
    # print(phone5.__dict__['_Phone__history'])
    # print(phone6.__dict__['_Phone__history'])
 
 
def phone_test_basic() -> None:
   
    phone1 = Phone('+43101010', False)
    phone2 = Phone('+43202020', True)
    phone3 = Phone('+43303030', False)
 
    print(Phone.global_phone_list)
    print()
 
    phone2.make_call('+43101010')
    phone3.make_call('+43101010')
    phone3.make_call('+43202020')
 
    phone2.make_call('+43303030')
    phone2.make_call('gibtsnicht ')
    phone1.show_call_history()
    phone2.show_call_history()
    phone3.show_call_history('in')
 
 
def my_own_phone_scenario() -> None:
    
    # TODO: implement
    pass
 
 
def execute() -> None:
   
    phone_partial_tests()
    # phone_test_basic()  
    # my_own_phone_scenario()
 
 
if __name__ == '__main__':
    execute()
melchiorxd вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
для чего нужно создавать два class(а). Создавать объект типа Building в другом class(е)? bITA666 Помощь студентам 5 27.03.2022 18:07
Your Phone Ципихович Эндрю Windows 4 18.05.2018 20:37
INSERT Не заносит в базу Class='class-one' VshurygaV PHP 8 20.10.2016 16:25
Обновление приложение Win Phone KorPaEv C# (си шарп) 0 09.10.2014 14:32
RSS на Windows Phone stas_kovel Мобильные ОС (Android, iOS, Windows Phone) 1 13.03.2013 16:33