Одним из способов является написание кода в методе для проверки того, что переданное значение является 'http' или 'https', что-то в строках:
if (protocol_type == 'http') or (protocol_type == 'https'):
Do Something
else:
Throw an exception
, которое будет хорошо работать во время выполнения,но не дает указания на проблему при написании кода.
Вот почему я предпочитаю использовать Enum и механизм подсказки типов, которые реализуют Pycharm и mypy.
Для примера коданиже вы получите предупреждение в Pycharm из его проверки кода, см. прикрепленный скриншот.На снимке экрана показано, что если вы введете значение, которое не является enum, вы получите предупреждение "Ожидаемый тип: ...".
Код:
"""Test of ENUM"""
from enum import Enum
class ProtocolEnum(Enum):
"""
ENUM to hold the allowed values for protocol
"""
HTTP: str = 'http'
HTTPS: str = 'https'
def try_protocol_enum(protocol: ProtocolEnum) -> None:
"""
Test of ProtocolEnum
:rtype: None
:param protocol: a ProtocolEnum value allows for HTTP or HTTPS only
:return:
"""
print(type(protocol))
print(protocol.value)
print(protocol.name)
try_protocol_enum(ProtocolEnum.HTTP)
try_protocol_enum('https')
Вывод:
<enum 'ProtocolEnum'>
http
HTTP
![Warnings issued by Pycharm Static Code Analysis - Code Inspection](https://i.stack.imgur.com/MbpTD.png)