@Lanserot
как еж в тумане

Можно ли четко указать тип переменной в Python?

Есть класс

class Class(object):

    def __init__(self):
        self.__num = 0

    @property
    def num(self) -> int:
        return self.__num

    @num.setter
    def num(self, num: int) -> None:
        self.__num = num


указываю возвращаемое значение и получаемое
но... пример ниже

class_object = Class()
print(class_object.num)
class_object.num = "str"
print(class_object.num)


не выдаст ошибку как и пример ниже

@num.setter
    def num(self, num: int) -> int:
        self.__num = num


Видел, что на пхп ругались, что там динамическая типизация, но я могу указать типы переменных как например (просто пример)

function foo(int $int): int
{
   return int * get_any_int()
}


И пример выше в пхп ВСЕГДА будет принимать число и отдавать его, в противном случае выдаст ошибку и покажет где именно

В Python я такого не могу найти, может есть библиотека? Или мне всегда надо собственноручно писать проверку? Как нашел в гугле, это в питоне работает только для IDE и для разработчика, но что если я имею дело с юзером? Или Api и не могу контролировать какие данные будут переданы или возвращены?
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
aRegius
@aRegius
Python Enthusiast
@num.setter
def num(self, num: int) -> None:
	  if not isinstance(num, int):
		    raise TypeError('Expected int')
	  self.__num = num
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы