Теория урока

75. Более глубокое изучение классов в Python

Оглавление урока

Введение

В предыдущем уроке мы реализовали два достаточно реалистичных класса и повторили основные концепции ООП в Python. В этом уроке мы немного углубимся в эти концепции и еще раз повторим ранее пройденный материал.

Оператор class как и def при выполнении создает объект класса и сохраняет ссылку на него в имени. Как вы помните, Python является интерпретируемым языком и поэтому созданный вами класс не существует до тех пор, пока интерпретатор не достигнет оператора class и не выполнит его. Обычно это происходит при импортировании модуля с этим классом.

Как мы говорили ранее, класс представляет из себя новое пространство имен. Главным отличием от функций и модулей, является возможность наследования атрибутов и методов из других классов.

Методы

Методы – это те же самые функции, только вложенные в оператор class и всегда имеющие первый параметр self. Параметр self получает экземпляр объекта, относительно которого вызывается метод. Он похож на указатель this из C++, но в отличие от него, всегда явно указывается. Как вы узнаете в дальнейшем, в Python можно реализовать статические методы, которые не ожидают передачи им экземпляра, а выполняются как обычные локальные функции внутри класса.

Наследование

Еще раз повторим: смысл нового пространства имен, созданного оператором class, заключается в возможности наследования. Каждый раз, когда вы используете запись объект.атрибут, вы говорите интерпретатору Python о необходимости найти ближайший в дереве пространств имен атрибут с таким именем.

Пространство имен

После изучения объектов классов и экземпляров, мы наконец-то закрываем тему пространств имен в Python. Про область видимости мы говорили в уроке «Область видимости в Python» и неоднократно вспоминали эту тему в последующих уроках. Если кратко подытожить этот материал, то можно прийти к такому выводу: для Python важно где происходит присвоение значения – это определяет область видимости.

Мы также выяснили в уроке «Написание модулей в Python», что пространство имен модулей представляет из себя обычный словарь. Объекты классов и экземпляров тоже реализованы на основе словарей, имеющих связи между собой. За счет этой связи между словарями организуется наследование классов.

Строки документации

Для документирования написанных вами классов и их методов, применяйте пару из трех двойных кавычек после определения имени класса или метода. Вспомним класс User из предыдущего урока:

Пример
'''  user.py  '''

class User:
""" Регистрация пользователя, изменение имени и рейтинга """
def __init__(self, login, password, name=None, rating=0):
self.login = login
self.password = password
self.name = name
self.rating = rating

Строка документации будет добавлена в атрибут __doc__, которую мы легко можем посмотреть:

Пример
''' main.py '''
from user import User

print(User.__doc__)

Сравнение классов и модулей в Python

Модули создаются при помощи файлов с кодом Python или на других языках, реализуют пакеты с логикой, применяются при помощи импортирования и формируют файл верхнего уровня.

Классы создаются при помощи оператора class, реализуют новый полноценный объект, применяются путем обращения к ним и лежат всегда внутри модуля.

В этом уроке мы еще раз повторили основные концепции ООП в Python, завершили тему области видимости, узнали о возможности документирования классов и методов и еще раз сравнили модули и классы в Python.

ПРОЧИТАНО
Следующий урок

Похожие уроки и записи блога

Продолжаем написание классов в PythonЗнакомство с Python
Обработка исключений (try/except) в PythonЗнакомство с Python
Модули в PythonЗнакомство с Python
Основы функций в PythonЗнакомство с Python
Типы данных в PythonЗнакомство с Python
Еще о возможностях модулей в Python Знакомство с Python
Основы объектно-ориентированного программирования (ООП) в PythonЗнакомство с Python
Написание модулей в PythonЗнакомство с Python
Работа с файлами в Python Знакомство с Python
<
×
>
Впервые на сайте Codebra?

Извините за это всплывающее окно, меня они тоже раздражают.

Образовательный ресурс codebra.ru полностью посвящен программированию. Все курсы и уроки находятся на главной странице. Ради интереса можете посмотреть на содержимое курсов по Python, HTML и CSS, JavaScript, C++ и другие, размещенные на главной странице.

Если что-то не нашли, то воспользуйтесь поиском по сайту, который находится на главной странице в самом верху.

Удачи в обучении!

Закрыть окно