ользовать datetime.datetime.now(), чтобы получить объект datetime с текущей датой/временем, используя атрибут .hour для времени суток и .strftime ('%A') — для дня недели. Как все прошло? Ваше решение должно выглядеть примерно так, как показано в следующем примере. Листинг 3.3. Модуль, который генерирует приветствия для онлайн-магазина
роцедурное ПО использует процедурные вызовы, которые мы называем функциями. Эти функции не инкапсулированы в классы, поэтому часто опираются только на свои входные данные и иногда на какое-то глобальное состояние.
Инкапсуляция и абстракция нередко являются итеративными процессами. Когда вы пишете больше кода, конструкции могут терять свой первоначальный смысл, что вполне естественно. Если код взбунтовался, нужен рефакторинг — обновление структуры кода для более полного удовлетворения ваших потребностей. Придется поменять способы представления понятий и форм поведения. Перемещение данных и имплементаций туда-сюда является необходимой частью совершенствования кода.
Крепостная стена инкапсуляции подразумевает приватность. Классы могут иметь приватные методы и данные, доступные только экземплярам класса. В свою очередь, с публичными методами и данными (интерфейсом класса) другие классы могут взаимодействовать.
Вместо строгой поддержки приватности Python доверяет разработчикам, следующим общепринятой договоренности: методы и переменные, предназначенные для использования только внутри класса, имеют префикс из символа подчеркивания. Но сторонние пакеты в своей документации часто громко заявляют о том, что такие методы могут меняться от версии к версии и на них не следует опираться явно.
Инкапсуляция является базисом объектно-ориентированного программирования. Она продвигает декомпозицию еще на один шаг вперед: в то время как декомпозиция группирует связанные между собой операции в функции, инкапсуляция группирует связанные между собой функции и данные в более крупную конструкцию. Эта конструкция действует для внешнего мира как барьер (или капсула).
Абстракция уменьшает когнитивную нагрузку и объем ваших умственных затрат на постижение неизвестного, оставляя вам больше времени на поддержание качества ПО!