Классы, определенные пользователем

Мы можем создавать наши собственные макеты. Они называются классами (classes). Мы можем определить наш собственный класс объекта – и из него создать столько экземпляров (instance) этого класса, сколько хотим. Все экземпляры будут отличаться – в зависимости от того, какие данные они дают при их создании. Они все будут иметь методы (и другие свойства) из макета – класс.

Давайте взглянем на простой пример. Мы определяем наш собственный класс, используя ключевое слово class.
Методы определяются, как функции – с использованием ключевого слова def. Они имеют отступы, чтобы показать, что они находятся внутри класса.

Есть несколько вещей, которые полезно пояснить более подробно. Проще показать на примере.

Здесь создается экземпляр класса OurClass с названием instsnce. При создании, мы передаем arg1 и arg2 в качестве аргументов. Когда мы вызываем метод instance.printargs (), данные исходные аргументы печатаются.

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

Определение класса начинается с:

class OurClass(object):

Определение класса допускает нечто, называемое наследованием (inheritance). Это означает, что ваш класс может наследовать свойства другого класса. Пока мы не будем углубляться в данную тему.
Все, что вам пока нужно знать – это то, что если вы не наследуете другой класс, вам следует унаследовать его от объекта (object). Определения классов должны выглядеть так:

class ClassName(object):

Метод __init__

Метод __init__ (init для инициализации) вызывается при создании экземпляра объекта. Инстанцирование выполняется (эффективно) вызовом класса.

Из нашего примера:

instance = OurClass('arg1', 'arg2')

Как мы видим, была создан новый экземпляр. Затем вызывается его метод __init__ и передаются аргументы ‘arg1’ и ‘arg2’.

Чтобы правильно понять метод __init__, нужно понять параметр self.

Параметр self

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

def __init__(self, arg1, arg2):

Однако, мы фактически передаем ему только два аргумента:

instance = OurClass('arg1', 'arg2')

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

Когда мы обращаемся к атрибутам объекта, мы делаем это по имени (или по ссылке). В данном случае экземпляр (instance) является ссылкой на наш новый объект. Мы получаем доступ к методу printargs объекта экземпляра с помощью instance.printargs.

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

Всякий раз, когда вызывается метод, ссылка на главный объект передается как первый аргумент. По соглашению вы всегда называете этот первый аргумент своими методами self.

Это означает, что в методе __init__ мы можем сделать:

self.arg1 = arg1
self.arg2 = arg2

Мы устанавливаем атрибуты объекта. Вы можете это проверить, выполнив следующие действия:

instance = OurClass('arg1', 'arg2')
print instance.arg1
arg1

Такие значения называются атрибутами объекта. В данном случае метод __init__ устанавливает атрибуты arg1 и arg2 экземпляра.

printargs

Теперь мы знаем достаточно, чтобы понять, что происходит в методе printargs.
Этот метод не принимает никаких аргументов – поэтому, когда мы определяем его, нам нужно только указать параметр self, который всегда передается объектным методам.

def printargs(self):

Когда этот метод вызывается, он ищет (и печатает) исходные аргументы, которые были сохранены как атрибуты объекта __init__.

Все статьи по теме ООП:
1. Объекты и ООП
– Процедурное программирование
– Разделение данных
2. Доступ к объекту
3. Создание новых объектов
Функции – это объекты
4. Классы, определенные пользователем
5. Сила объектов

Поделитесь с друзьями:

Оставьте комментарий