Мені було цікаво про найкращі практики вказівки недійсних комбінацій аргументів у 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 чи існує інший, бажаний метод?