Найти - Пользователи
Полная версия: как сделать что то на подобии пользовательского типа
Начало » Python для новичков » как сделать что то на подобии пользовательского типа
1 2
Romb
привет!
Я совсем новичок, вопросы у меня очень глупые.
Мне нужно что то на подобии пользовательского типа, передаваемого в функцию.

def my_func(day_of_week: monday):

мне нужно что бы я мог использовать именно дни недели.
day_of_week : mondey, sunday, …

Был бы очень благодарен если дадите ссылку на примеры практической реализации приложений, что бы понять как пишутся реальные сценарии.

Спасибо!
FishHook
Romb
мне нужно что бы я мог использовать именно дни недели.
В питоне нет никаких ограничений на передачу значения в функцию. То, что вы хотите в пионе сделать невозможно ввиду отсутствия этапа компиляции.
Romb
Спасибо за ответ.
Если я хочу использовать как аргумент функции переменную которая может быть только, например “YES” или “NO”. Мне сделать проверку в этой функции и выводить ошибку если ввили не правильное значение? А если я хочу использовать такие аргументы во многих функциях, мне прийдется эту проверку делать во всех местах. Могу ли я как то сделать что бы не копировать проверку каждый раз туда где мне нужно применить это условие.
FishHook
Может быть вы не поняли, повторю еще раз: в питоне нет этапа компиляции, поэтому ошибку вы получите только в рантайме. Проверяют значения после ввода, а не после передачи в функцию.
ZerG
ну так создайте функцию для проверки chek(data)

а далее используете ее внутри ваших конструкций
if check(data):
ololo…
Romb
Спасибо за ответ.
Как то не очень удобно получается.
Нельзя сделать как встроенный тип данных?
alex925
Romb
Свой тип ты можешь создать, пишешь класс это будет твои тип данных. Просто соль в том, что ты не можешь ограничить тип данных поступающих в функцию, потому что python язык с динамической типизацией и типы тут не проверяются. Тут применяется принцип утиной типизации:
Если это выглядит как утка, плавает как утка и крякает как утка, то это возможно и есть утка.

Не надо пытаться перенести принципы других языков в Python, лучше больше почитай о динамической типизации и как с ней работать.

Вообще если уж совсем неймется, то обрати внимание на модуль enum из стандартной библиотеки, это не аналог того, что есть в языках со статической типизацией, но он реализует общий привычный интерфейс.
Romb
Спасибо за ответ.
doza_and
Romb
Могу ли я как то сделать что бы не копировать проверку
Нет не можете. Причем не только на питоне а и на любом языке. Если там не будет никаких признаков, то как вы отличите функцию в которой нужна проверка от функции в которой она не нужна?

Можно упростить запись. Посмотрите как делают декораторы.
ayb
Вот кстати у Саммерфилда в книге “Питон на практике” в примере с параметризированным декоратором то, что нужно автору.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB