2017-01-20 13 views
1

Я использую модуль ввода Python3.5, чтобы предоставить типы подсказок для моих классов и функций. Он хорошо работает с PyCharm, поскольку он использует эти подсказки.Как использовать Python3.5 для ввода в качестве проверок времени выполнения?

Однако я хотел бы заставить интерпретатор python выполнять проверки типа времени выполнения, когда заданы подсказки (или, по крайней мере, бросать некоторые предупреждения).

Текущее состояние:

In [1]: def times2(number: int): 
    ...:  return number + number 
    ...: 

In [2]: times2(8) 
Out[2]: 16 

In [3]: times2('8') 
Out[3]: '88' 

Желаемая состояние:

In [1]: def times2(number: int): 
    ...:  return number + number 
    ...: 

In [2]: times2(8) 
Out[2]: 16 

In [3]: times2('8') 
Out[3]: Assertion error: '8' is not an int 

Могу ли я каким-то образом обеспечить соблюдение питона, чтобы сделать это?

+0

Нет, вы не можете. –

+0

Возможно, проверка типа компиляции будет соответствовать вашим потребностям? [mypy] (http://mypy-lang.org/) –

ответ

1

Вы можете использовать утверждение следующим образом:

def times2(number: int): 
    assert type(number) is IntType, "number is not an int: %r" % number 
    return number + number 

Или я неправильно ваш вопрос?

+0

Я могу объяснить концепцию утверждений, как и где их использовать, если хотите? – Alfie

+0

ну, это желаемое поведение, однако я думал, что это приведет к его как-то автоматически, просто написав подсказку типа выше. Nevermind, спасибо – petrbel

+0

@petrbel oh right, no вам нужно было бы использовать утверждение или, возможно, исключить исключение – Alfie