Шаг 134.
Основы языка Python. Объектно-ориентированное программирование (ООП). Определение класса и создание экземпляра класса

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

    Класс описывается с помощью ключевого слова class по следующей схеме:

class <Название класса> [(<Класс1>[, ...,   <КлассN>])]: 
    ["""  Строка документирования  """] 
    <Описание  атрибутов и методов>

    Инструкция создает новый объект и присваивает ссылку на него идентификатору, указанному после ключевого слова class. Это означает, что название класса должно полностью соответствовать правилам именования переменных. После названия класса в круглых скобках можно указать один или несколько базовых классов через запятую. Если же класс не наследует базовые классы, то круглые скобки можно не указывать. Следует заметить, что все выражения внутри инструкции class выполняются при создании класса, а не его экземпляра. Для примера создадим класс, внутри которого просто выводится сообщение:

# Создание определения класса
# -*- coding: utf-8 -*-
class MyClass:
    """ Это строка документирования """
    print("Инструкции выполняются сразу")

input()
Архив с файлом можно взять здесь.

    Этот пример содержит лишь определение класса MyClass и не создает экземпляр класса. Как только поток выполнения достигнет инструкции class, сообщение, указанное в функции print(), будет сразу выведено.

    Создание атрибута класса аналогично созданию обычной переменной. Метод внутри класса создается так же, как и обычная функция, - с помощью инструкции def. Методам класса в первом параметре, который обязательно следует указать явно, автоматически передается ссылка на экземпляр класса. Общепринято этот параметр называть именем self, хотя это и не обязательно. Доступ к атрибутам и методам класса внутри определяемого метода производится через переменную self с помощью точечной нотации - к атрибуту х из метода класса можно обратиться так: self.х.

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

  <Экземпляр класса> = <Название класса> ( [<Параметры>] )

    При обращении к методам класса используется такой формат:

  <Экземпляр класса>.<Имя метода> ( [<Параметры>] )

    Обратите внимание на то, что при вызове метода не нужно передавать ссылку на экземпляр класса в качестве параметра, как это делается в определении метода внутри класса. Ссылку на экземпляр класса интерпретатор передает автоматически.

    Обращение к атрибутам класса осуществляется аналогично:

  <Экземпляр класса>.<Имя атрибута>

    Определим класс MyClass с атрибутом х и методом print_x (), выводящим значение этого атрибута, а затем создадим экземпляр класса и вызовем метод:

# Создание атрибута и метода
# -*- coding: utf-8 -*-
class MyClass:
    def __init__(self):	#  Конструктор
        self.x =10	#  Атрибут  экземпляра  класса
    def print_x(self):	#  self - это ссылка на экземпляр класса
        print(self.x)	# Выводим значение атрибута

c = MyClass() # Создание экземпляра класса
#  Вызываем метод print_x()
c.print_x() #  self не указывается при  вызове метода
print(c.x)  #  К атрибуту можно обратиться непосредственно
Архив с файлом можно взять здесь.

    Результат работы приложения:

10
10

    На следующем шаге мы закончим изучение этого вопроса.




Предыдущий шаг Содержание Следующий шаг