Мне было интересно узнать о лучших практиках для указания недопустимых комбинаций аргументов в Python. Я пришел через несколько ситуаций, когда у вас есть функция, как так:Какое исключение я должен поднимать при неправильных/незаконных комбинациях аргументов в Python?
def import_to_orm(name, save=False, recurse=False):
"""
:param name: Name of some external entity to import.
:param save: Save the ORM object before returning.
:param recurse: Attempt to import associated objects as well. Because you
need the original object to have a key to relate to, save must be
`True` for recurse to be `True`.
:raise BadValueError: If `recurse and not save`.
:return: The ORM object.
"""
pass
Единственная неприятность с этим, что каждый пакет имеет свой собственный, как правило, слегка отличающиеся BadValueError
. Я знаю, что в Java существует java.lang.IllegalArgumentException
- хорошо ли понятно, что каждый будет создавать свои собственные BadValueError
s в Python или есть другой предпочтительный метод?
Прекратить писать классы и пользовательские исключения - http://pyvideo.org/video/880/stop-writing-classes – 2012-11-15 14:50:30
@HamishGrubijan, что видео ужасно. Когда кто-то предлагал хорошо использовать класс, он просто блеял «Не используйте классы». Brilliant. Занятия хороши. [Но не верьте мне на слово) (http://lucumr.pocoo.org/2013/2/13/moar-classes/). – 2016-02-23 09:41:41
@RobertGrant Нет, вы этого не понимаете. Это видео на самом деле не буквально «не использует классы». Речь идет о том, чтобы не слишком усложнять ситуацию. – RayLuo 2016-08-31 04:06:52