-
Notifications
You must be signed in to change notification settings - Fork 1
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Labyrinth: расписать типы классов и функций #212
Comments
А что это? |
Это прикольная вещь. Чтобы разные среды и питон работали лучше (не знаю чем это хорошо питону, но пишут, что лучше становится; а в поисках ошибок это точно помогает: проверено), можно у всех необходимых переменных определить их тип, а у всех необходимых функций - типы их аргументов и тип возвращаемого значения. Например можно написать так: class LabyrinthObject:
_lrtype = 'labyrinth_object' # type: str
...
def have_flag(self, flag_name: str) -> bool:
return flag_name in self.flags Здесь у переменной Да, пример для переменной выглядит абсурдно: про строку и так понятно, что она строка. Более лучшим примером, например, может послужить часто встречающаяся строка health = self.labyrinth.get_unique('health') По своей природе health = self.labyrinth.get_unique('health') # type: Health Это полезно, например, чтобы всевозможное ПО могло понять, что у него есть объект, который обладает кучей крутых методов, и понятно, что они получают и выдают (выглядит как зацикливание, не так ли?). Также это можно делать двумя способами: в самом файле (1) или в отдельном файле с тем же названием, но с расширением def random_function(random_argument: str) -> List[str]:
return random_argument.split('15') (2) def random_function(random_argument):
return random_argument.split('15') random_file.pyi: def random_function(random_argument: str) -> List[str]: ... Разбиение на части очень удобно, когда у тебя имеются громоздкие функции с большим количеством аргументов. Иначе по-моему лучше первое. По этому я нашёл официальные материалы: К сожалению, из-за языкового барьера у меня не получается это понять, поэтому я быстро закончил с этим (хотя я переработал почти весь |
Вроде понятно. Возможно полезно. Я знаю, что такой способ описания типов используют всякие IDE. А для чего ещё это нужно? Я не понял. Есть какие-то программы для анализа? Про pyi. Раз уж сделал, то ок. Но главное не позиционируй всю эту псевдо-типизацию в приоритет. Чисто моё мнение по этому вопросу. Без разделения на два файла - ок. Вроде полезно т.к. иногда что-то становится понятнее. Главный message - подумай про то, действительно ли это нужно, что стоит тратить на это силы. |
Я делаю это по той причине, что моя IDE тупит без этого, и поэтому я не могу с лёгкостью делать очень приятные вещи. Например, IDE иногда просто не понимает, что тот или иной аргумент - это Лабиринт, поэтому ничего не может подсказывать или проверять. А хотелось бы...
Ну на самом деле на интерпретацию эти файлы не влияют. И плюс объявление, например,
Понятное дело. Я пока что делаю их, если не возникает проблем. И только чтобы потом было (мне) комфортнее. Но вот давно возникла проблема и я забил, пока не сяду и не разберусь (походу не скоро). |
Расписать у методов классов и других функций типы аргументов и возвращаемых значений. Возможно, стоит использовать нотацию через
*.pyi
.The text was updated successfully, but these errors were encountered: