Описание курса:

Объектно-ориентированное программирование на Python - это немного более углубленная часть знания по Python, которая позволит продвинуться дальше и строить более структурированные приложения, нежели в рамках функциональной парадигмы, поэтому знание азов этого курса является обязательным для людей, которые отправляют заявку на позицию Python-разработчик. Удачного чтения!

Вопросы для самопроверки:

Сомневаешься, будет ли тебе полезен материал курса, или хочешь убедиться, что усвоил материал курса? Проверь свои знания с помощью вопросов для самопроверки по материалам курса.

  1. На чем сосредотачивается объектно-ориентированное программирование?
  2. Чем отличается подход к программированию в структурном стиле от объектно-ориентированного подхода?
  3. Какие основные концепты включает объектно-ориентированное программирование?
  4. Какое понятие в ООП обозначает возможность классов с различающимся кодом иметь схожие интерфейсы?
  5. Что такое инкапсуляция в контексте Python, и как она отличается от других языков программирования?
  6. Как создать класс в Python?
  7. Как создать объект в Python и сохранить ссылку на него?
  8. Какой параметр обычно используется в Python для ссылки на объект внутри метода?
  9. Можно ли в Python добавлять новые атрибуты объектам, которые отсутствуют в их классе?
  10. Почему в программировании предпочтительнее использовать сеттеры и геттеры для работы с полями объекта?
  11. Как называется метод-конструктор в Python?
  12. Что произойдет, если попытаться создать объект класса Person без передачи обязательных параметров?
  13. Как можно разрешить создание объекта без передачи необходимых параметров и при этом избежать ошибок?
  14. Какой метод выполняет функцию деструктора в Python?
  15. Что происходит при удалении переменной в Python?
  16. Что такое наследование в контексте объектно-ориентированного программирования?
  17. Чем отличаются классы от подклассов в ООП?
  18. Как устанавливается связь между родительским и дочерним классом в Python?
  19. Как метод подкласса может переопределять метод надкласса?
  20. В чем преимущество вызова метода родительского класса в подклассе вместо полного переопределения?
  21. Как дополнить метод родительского класса в подклассе?
  22. Что такое полиморфизм в объектно-ориентированном программировании?
  23. Как меняется реализация метода в зависимости от класса, которому он принадлежит?
  24. Возможно ли применение полиморфизма без использования наследования? Приведите пример.
  25. Как метод __str__() влияет на вывод информации объектом класса?
  26. Что такое метод перегрузки оператора сложения в Python и как он реализован?
  27. Как в Python можно реализовать имитацию скрытия атрибутов в классе?
  28. Почему может быть полезно скрывать поля объекта в программировании?
  29. Каким образом Python позволяет получить доступ к скрытому атрибуту, который был "замаскирован" с помощью двойного подчеркивания?
  30. Как следует организовать метод __setattr__(), чтобы не возникало рекурсивного вызова?
  31. Как согласно объектно-ориентированным подходам принято называть методы для получения и изменения данных в классах?
  32. Какое преимущество предоставляет композиционный подход в объектно-ориентированном программировании?
  33. В чем различие между композицией и наследованием в объектно-ориентированном программировании?
  34. Что такое перегрузка операторов в языке Python и как она реализуется в классах?
  35. Что делает метод __getitem__() в классе Python?
  36. В чем разница между методами __str__() и __repr__() при преобразовании объекта в строку?
  37. Как метод __call__() может быть полезен в классе Python?
  38. Какое значение имеет '__name__', когда файл запускается как скрипт?
  39. Что следует обязательно разместить в каталоге пакета, чтобы интерпретатор понимал, что это именно пакет?
  40. Каковы основные преимущества использования пакетов в Python?
  41. Каким образом можно указать, какие модули импортировать с помощью команды from имя_пакета import *?
  42. Что такое документирование кода и как оно отличается от комментариев?
  43. Какие кавычки используются для строк документации в Python?
  44. Какие есть рекомендации по отображению строк документации в Python?
  45. Как вызвать справочную информацию о документации модуля в интерактивном режиме?
  46. Как выйти из режима справки, при использовании функции help?
  47. Какой язык документации кода является предпочтительным?
  48. Какие основные этапы разработки выделяются в объектно-ориентированном программировании?
  49. Почему использование ООП может потребовать тщательного анализа и предварительного проектирования?
  50. Чем объекты в Python отличаются от обычных типов данных в других языках?
  51. Как в Python организуются пространства имен?
  52. В каких сценариях Python широко используется, несмотря на его объектно-ориентированную природу?
  53. Что произойдет, если попытаться вызвать метод объекта для встроенного типа Python, который этого метода не имеет?
  54. Как можно вызывать методы, которые не требуют объекта класса в качестве аргумента?
  55. Какой декоратор в Python используется для создания статических методов в классе?
  56. Опишите пример, когда использование статического метода в классе может быть полезным.