- Часть I. Вводное руководство
- Глава 2. Использование интерпретатора
- 2.2. Интерпретатор и его среда
- 9.3.2. Объекты-классы
9.3.2. Объекты-классы
Объекты-классы поддерживают два вида операций: доступ к атрибутам и создание экземпляра класса.
Доступ к атрибутам объекта-класса осуществляется так же, как и для других объектов языка Python: obj.attrname. Действительными именами атрибутов являются все имена, помещённые в пространство имён класса при создании объекта-класса. Пусть определение класса выглядит следующим образом:
class MyClass:
'Простой пример класса'
i = 12345
def f(x):
return 'Привет всему миру'
Тогда i и f являются действительными атрибутами, ссылающимися на целое число и объект-метод соответственно. Атрибутам можно присваивать новые значения, например, Вы можете изменить значение MyClass.i. __doc__ также является действительным атрибутом, ссылающимся на строку документации класса: 'Простой пример класса'.
Создание экземпляра класса использует запись вызова функций. Просто считайте объект-класс функцией без параметров, возвращающей созданный экземпляр класса. Например,
x = MyClass()
создает новый экземпляр класса и присваивает его локальной переменной x.
В приведённом примере создается "пустой" объект. Во многих случаях необходимо создавать объект с определенным начальным состоянием — для этого класс должен содержать специальный метод __init__(), например:
class MyClass:
def __init__(self):
self.data = []
Если для класса определен метод __init__(), то он автоматически вызывается при создании каждого экземпляра этого класса.
Для большей гибкости метод __init__(), конечно, может иметь аргументы. В этом случае, аргументы, используемые при создании экземпляра класса, передаются методу __init__(). Например:
>>> class Complex:
... def __init__(self, realpart, imagpart):
... self.r = realpart
... self.i = imagpart
...
>>> x = Complex(3.0, -4.5)
>>> x.r, x.i
(3.0, -4.5)