В целях изучения объктно-ориентированного программирования (ООП) представлена серия задач. Все задачи разделены на блоки, которые составлены от простого к сложному.
Что такое ООП?
ООП - парадигма, в которой программа состоит из взаимодействующих между собой объектов. Объекты имеют свойства и поведение. Обычно объекты - это экземпляры класса. Класс - это шаблон, в котором описаны все свойства будущего объекта и его методы.
ООП имеет 4 основных принципа:
- Инкапсуляция - сокрытие поведения объекта внутри него.
- Абстракция - объект имеет «интерфейс». У объекта есть методы и свойства, к которым мы можем обратиться извне этого объекта.
- Наследование - один класс наследует свойства и поведение другого класса (родитель, потомок).
- Полиморфизм - переопределение поведения.
В папке 'Introduction' приведена задача для понимания класса, экземпляра класса, атрибутов класса и экземпляра.
2.1. В папке 'self' приведена задача для понимания аргумента self. self — это стандартное имя первого аргумента для методов объекта.
2.2. В папке 'init' приведены задачи для понимания инициализации объекта с помощью метода init.
2.3.В папке 'mono-state' приведена задача для понимания паттерна моносостояния экземпляров класса.
2.4. В папке 'public,protected,private' приведены задачи для понимания публичных, приватных, защищенных атрибутов и методов.
2.5. В папке 'get,set,property' приведены задачи для понимания getter, setter и property атрибутов.
2.6. В папке 'decorator' приведены задачи для понимания декоратора property.
2.7. В папке 'calculated properties' приведены задачи для понимания вычисляемых свойств.
2.8. В папке 'classmethod,staticmethod' приведены задачи для понимания classmethod и staticmethod.
2.9. В папке 'class namespace' приведены задачи для понимания пространства имен класса.
3.1. В папке 'str, repr' приведены задачи для понимания магических методов __str__ и __repr__.
3.2. В папке 'len, abs' приведены задачи для понимания магических методов __len__ и __abs__.
3.3. В папке 'add, mul, mub, truediv' приведены задачи для понимания магических методов _add__, __mul__, __sub__ и __truediv__.
3.4. В папке 'comparison methods' приведены задачи для понимания cпециальных методов сравнения объектов классов.
3.5. В папке 'eq, hash' приведены задачи для понимания магических методов __eq__ и __hash__.
3.6. В папке 'bool' приведены задачи для понимания магического метода __bool__.
3.7. В папке 'call' приведены задачи для понимания магического метода __call__.
3.8. В папке 'polymorphism' приведены задачи для понимания полиморфизмп в Python.
3.9. В папке 'getitem, setitem, delitem' приведены задачи для понимания методов __getitem__ , __setitem__ и __delitem__.
3.10. В папке 'iter, next' приведены задачи для понимания магических методов __iter__ и __next__.
4.1. В папке 'principle' приведены задачи для понимания принципов наследования в ООП.
4.2. В папке 'built-in types' приведены задачи для понимания наследования от object и от других встроенных типов.
4.3. В папке 'redefinition' приведены задачи для понимания переопределения методов в Python.
4.4. В папке 'extending' приведены задачи для понимания расширения класса в Python.
4.5. В папке 'delegation' приведены задачи для понимания делегирования в Python.
4.6. В папке 'extending' приведены задачи для понимания множественного наследования.
4.7. В папке 'slots' приведены задачи для понимания Slots.
4.8. В папке 'slots (property)' приведены задачи для понимания Slots: свойства(property) и наследования.
В папке 'Python exceptions' приведены задача для понимания обработки исключений через try, except, else, finally, raise.