Как правило, в Python рекомендуется обращаться с ним как с объектом Time
и просто проверять, есть ли у него нужные свойства, а не с помощью isinstance
. Таким образом, кто-то (включая вас) может в будущем создать свой собственный Time
-подобный объект с соответствующими атрибутами (hr
, min
, ampm
) и использовать его в качестве замены. Это даже сработало бы - если вы не выполняете основную логику с объектами Time
или взаимодействуете с этой логикой с помощью операторов - с их собственными пользовательскими объектами, которые не используют те же поля. Это будет иметь несколько хороших преимуществ, в зависимости от того, как именно работают объекты расписания.
Этот стиль кодирования известен как " Проще просить прощения, чем разрешения " и относительно распространен в python благодаря широкому использованию duck typing .
Несколько лучший шаблон, чем использование isinstance
, который все же позволяет вам проверить, соответствует ли он стандарту (если вы хотите это сделать), может вместо этого использовать hasattr
. Например:
hasattr(start_time, 'ampm')
Я также согласен с остальными, что Schedule
, похоже, не имеет , это отношение с Time
, а имеет отношение , иначе Вы можете в конечном итоге создать расписание с Schedule
в качестве времени начала и Schedule
в качестве времени окончания.