Простой Python. современный стиль программирования - читать онлайн бесплатно полную версию книги . Страница 117

158

Глава 6. Ой-ой-ой: объекты и классы

Объекты можно считать существительными, а их методы — глаголами. Объект

представляет отдельную вещь, а его методы определяют, как она взаимодействует

с другими вещами.

В отличие от модулей, вы можете иметь одновременно несколько объектов,

каждый из которых имеет разные значения атрибутов. Они являются суперструк-

турами данных, в которые был добавлен код.

Определяем класс

с помощью ключевого слова class

В главе 1 я сравнил объект с пластмассовой коробкой. Класс похож на форму, из

которой создается эта коробка. Например, String является встроенным классом

Python, который создает строковые объекты вроде 'cat' и 'duck'. Python имеет

множество других встроенных классов, позволяющих создавать другие стандарт-

ные типы данных, включая списки, словари и т. д. Чтобы создать собственный объ-

ект в Python, вам сначала нужно определить класс с помощью ключевого слова

class. Рассмотрим простой пример.

Предположим, вы хотите определять объекты, которые представляют инфор-

мацию о людях. Каждый объект будет представлять одного человека. Сначала вам

нужно определить класс Person в качестве формы. В последующих примерах мы по-

пробуем использовать больше версий этого класса по мере продвижения от простей-

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

В первый раз создадим самый простой из возможных классов — пустой класс:

>>> class Person():

... pass

Как и в случае с функциями, нам нужно сказать pass, чтобы показать, что этот

класс пуст. Такое определение является необходимым минимумом создания объ-

екта. Вы создаете объект из класса с помощью вызова имени класса так, будто оно

является функцией:

>>> someone = Person()

В этом случае Person() создает отдельный объект класса Person и присваивает

его имени someone. Но наш класс Person пуст, поэтому объект someone, который мы

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

такой класс, я показываю его только для того, чтобы на его основе создать следу-

ющий пример.

Попробуем снова — в этот раз добавим в класс специальный метод инициали-

зации __init__:

>>> class Person():

... def __init__(self):

... pass

Определяем класс с помощью ключевого слова class

159

Так выглядят реальные определения классов в Python. Согласен, __init__()

и self смотрятся странно. __init__() — это особое имя метода, который инициали-

зирует отдельный объект с помощью определения его класса1. Аргумент self ука-

зывает на сам объект.

Когда вы указываете __init__() в определении класса, его первым параметром

должен быть объект self. Несмотря на то что в Python self не является зарезерви-

рованным словом, оно применяется довольно часто. Никому из тех, кто будет читать

ваш код позже (включая вас!), не придется гадать, что вы имели в виду, когда