Материалы, подготовленные в результате оказания услуги, помогают разобраться в теме и собрать нужную информацию, но не заменяют готовое решение.

Определение классов в Python и создание экземпляров классов

Статью подготовили специалисты образовательного сервиса Zaochnik.

Содержание:
Примечание 1

Python — это язык программирования, полностью основанный на объектной ориентации. Это позволяет разработчикам создавать собственные классы, наследовать от уже существующих или встроенных классов, а также делать экземпляры этих классов.

Создание класса

Определение класса в Python — задача сравнительно простая. Подобно функциям, для этого не нужно вводить отдельное объявление интерфейса.

Процесс начала определения класса в Python начинается с ключевого слова `class`, после которого ставится имя класса (идентификатор). Формально это основные условия, при которых класс не должен наследоваться от другого.

Пример 1

```python

class PapayaWhip:

     pass

```

Вышеописанный класс называется `PapayaWhip` и не наследуется от каких-либо других классов. Важно отметить, что каждое слово в имени класса обычно пишется с заглавной буквы, однако это не строгий стандарт, а соглашение.

Каждая строка внутри определения класса имеет отступ, как в функциях, условных конструкциях `if`, циклах `for` и других блоках кода. Первая строка без отступа находится вне области определения класса.

Класс `PapayaWhip` не имеет ни методов, ни атрибутов, но синтаксис требует, чтобы его тело не оставалось пустым. В таких случаях удобно использовать оператор `pass`.

Примечание 2

В Python `pass` является зарезервированным словом, которое говорит интерпретатору "продолжай, здесь ничего нет". Этот оператор ничего не выполняет, но служит полезным приемом для создания заглушек для функций или классов.

Оператор `pass` можно рассматривать как аналог пустого набора или фигурных скобок в языках, таких как Java или C++. Хотя большинство классов и наследуются от других, этот конкретный класс — нет. Многие классы также содержат свои методы, но не этот. В Python класс может существовать только с именем. Люди, знакомые с C++, могут посчитать странным, что в классах Python нет явных конструкторов и деструкторов. Тем не менее, класс в Python может включать в себя метод, похожий на конструктор — `__init__()`.

Метод `__init__()`

Пример 2

```python

class Fib:

     '''итератор, который генерирует числа

     из последовательности Фибоначчи'''

     def __init__(self, max):

          …

```

Классы, подобно модулям и функциям, могут (и должны) содержать строки документации (docstrings). Метод `__init__()` вызывается сразу после создания экземпляра класса. Неправильно называть его "конструктором" класса. Хотя он выполняет функции, схожие с конструкторами в C++ (это первый метод, который вы определяете в классе), он не является таковым, поскольку объект уже считается созданным к моменту вызова `__init__()`, и вы можете ссылаться на него с использованием корректной ссылки `self`.

Примечание 3

Аргументом любого метода класса, включая `__init__()`, всегда будет ссылка на текущий экземпляр. Этот аргумент по традиции называется `self`. Он выполняет аналог функции `this` из C++ или Java, но в Python это не зарезервированное слово. Несмотря на это, называть его иначе не рекомендуется.

В методе `__init__()` `self` ссылается на только что созданный объект, а в других методах — на экземпляр, из которого был вызван метод. Несмотря на то что необходимо указывать `self` при определении метода, делать это при вызове не нужно; Python добавит его автоматически.

Создание экземпляров класса

Чтобы создать новый экземпляр класса в Python, достаточно вызвать сам класс, как будто это функция, передав необходимые параметры для метода `__init__()`. В результате будет создан новый объект.

Каждый экземпляр класса имеет встроенный атрибут `__class__`, который указывает на класс объекта. Программисты, знакомые с Java, могли бы знать о классе `Class`, который предоставляет методы `getName()` и `getSuperclass()` для получения сведений об объекте. В Python информация доступна через соответствующие атрибуты, но концепция остается прежней.

Следует отметить, что строку документации (docstring) класса можно получить так же, как это делается для функций и модулей. Все экземпляры класса используют одну и ту же строку документации.

Чтобы создать новый экземпляр класса в Python, просто вызовите его как функцию, без необходимости использования явных операторов, как `new` в C++ или Java.

Переменные экземпляра

Пример 3

```python

class Fib:

     def __init__(self, max):

          self.max = max

```

`self.max` — это переменная экземпляра. Она не связана с переменной `max`, переданной в метод `__init__()` в качестве параметра. `self.max` является "глобальной" переменной для данного экземпляра класса, к которой можно ссылаться из других методов.

Переменные экземпляра относятся только к конкретному экземпляру класса. Например, если вы создадите два экземпляра класса `Fib` с различными значениями `max`, каждый из них будет хранить только свое собственное значение.

Пример 4

```python

import fibonacci2

fib1 = fibonacci2.Fib(100)

fib2 = fibonacci2.Fib(200)

>>> fib1.max # 100

>>> fib2.max # 200

```

Навигация по статьям

Выполненные работы по программированию

  • Программирование

    Latex

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      18 ноября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу
  • Программирование

    Lazarus

    • Вид работы:

      Решение задач

    • Выполнена:

      16 ноября 2017

    • Стоимость:

      2 800 руб.

    Заказать такую же работу
  • Программирование

    Электронный журнал посещаемости для студентов

    • Вид работы:

      Курсовая работа

    • Выполнена:

      10 ноября 2017

    • Стоимость:

      900 руб.

    Заказать такую же работу
  • Программирование

    Определить оценки внутреннего и внешнего качества при разработке приложения Блокнот

    • Вид работы:

      Контрольная работа

    • Выполнена:

      9 ноября 2017

    • Стоимость:

      4 200 руб.

    Заказать такую же работу
  • Программирование

    Контрольная работа Математические основы обработки информации

    • Вид работы:

      Контрольная работа

    • Выполнена:

      22 октября 2017

    • Стоимость:

      3 500 руб.

    Заказать такую же работу
  • Программирование

    Аналитическая справка об участии воспитанников в жизни ДОУ

    • Вид работы:

      Набор текста (компьютерный)

    • Выполнена:

      12 октября 2017

    • Стоимость:

      400 руб.

    Заказать такую же работу