Я хотел бы улучшить реализацию моей модели, добавив некоторые проверки согласованности (это значение не может быть отрицательным, это не может быть None и т. Д.)Как (следует ли мне) реализовать согласованность модели в Python?
Я задавался вопросом, было ли это «Pythonic», чтобы добавить некоторые «проверки типа» также проверяются. Например, убедитесь, что объект, который я положил в свой автомобиль, действительно является SteeringWheel.
Я хочу выполнить некоторую проверку типа, чтобы как можно скорее уловить ошибки. Я хочу знать, добавил ли я правильный SteeringWheel, как только я поместил его в Car, а не когда автомобиль совершит свой первый поворот (а затем отлаживает мой путь через автокатастрофу, пока не нахожу ошибочное назначение).
Я читал, что было бы больше в философии типа утиного Python проверять атрибуты или методы добавленного объекта вместо их типа. Я понимаю этот принцип, но это будет означать, что модель должна знать, как объект будет использоваться для проверки правильности данного объекта и создает неправильную зависимость между моделью и контроллером.
Кроме того, какие атрибуты должны быть проверены? wheel.rotate()
может применяться к рулевому колесу, но также к шине.
Другой способ, чтобы позволить модели, как это и окружают каждый использование объектной модели путем примерки улова, ожидая для AttributeError
или TypeError
, и это было бы весьма громоздким.
Возможно, я ошибаюсь, чтобы этого захотеть, и если кто-нибудь может убедить меня, что у меня есть неправильная идея, пожалуйста. Но если вы считаете, что я прав, чтобы получить модель, которая вызывает ошибку, когда она становится несовместимой, можете ли вы сказать мне, как сделать это, кроме использования isinstance()
?
спасибо.
возможно связанный: http://stackoverflow.com/questions/1275646/python-3-and-static-typing – ch3ka
@ ch3ka Это очень интересный пост. Я не знал об аннотациях. – Mankalas