Python — это высокоуровневый язык объектно-ориентированного программирования, созданный специально для того, чтобы помочь программистам в написании ясного логичного кода для проектов любого размера.
Чёткость, лёгкость в понимании и в то же время мощь — нигде больше не проявляются эти принципы так, как в классах Python.
Класс Python
Почти всё в Python можно назвать объектом. И у каждого объекта, естественно, есть свои характеристики, свойства и функции.
Мы можем считать класс неким «макетом» для создания объектов. Точнее сказать — нашим собственным специально настраиваемым макетом. А раз мы сами под себя его настраиваем, то и задавать ему можем любые характеристики, свойства и функции!
Начнём с простого примера. Создадим класс со свойством «x», где x=10. Вот определение нашего класса:
class my_class:
x = 10
Вот и всё! Мы создали наш первый класс Python my_class со свойством x и значением 10. Чтобы использовать класс, вызываем нашу функцию. Дальше мы можем обращаться к любым свойствам класса по отдельности.
class my_class:
x = 10
c_1 = my_class()
print(c_1.x)
Данный код выводит число 10. Всё просто!
Ещё мы можем поменять переменную, просто присвоив ей новое значение. Вместо того, чтобы x был равен 10, пусть он равняется строке «Bob».
Функция __init__()
У всех классов есть функция __init__(). Её можно менять в любое время. Функция __init__()выполняется всякий раз, когда из класса создаётся объект. Она может использоваться для инициализации переменных класса. __init__()становится очень полезной, когда нам нужно, чтобы класс Python всегда начинался с тех или иных свойств.
В качестве примера возьмём следующий код:
Здесь у нас есть два человека с классом Person и именами Bob и Kate (типа мы их создали). В обоих классах исполнялась функция __init__(), инициализируя переменные класса для имени, пола и страны человека.
Что касается имени и пола, мы передали классу свои переменные, которые требовались в __init__(). Переменная «страна» инициализировалась при создании объекта в этой же функции, но с одним отличием: по причине того, что она не является переменной функции __init__(), значение не может быть задано извне. Поэтому у всех будет одна страна — США.
Результат этого кода будет такой:
Bob
Male
USA
Kate
Female
USA
Функции класса
Как любой объект, классы Python могут содержать функции! Находясь внутри класса, функции ведут себя точно так же, как вне его. Единственное отличие — способность функций класса обращаться непосредственно к переменным класса, не принимая их в качестве аргументов.
Первая функция класса встречается в строке 9 print_info(), которая выводит всю информацию о нашем объекте Person. Заметьте, что теперь, используя переменные класса с self, мы можем получить информацию о Бобе из любого места класса! Теперь, когда у нас есть прямой доступ ко всей информации, применять функции к объектам Python стало намного удобнее.
С другой стороны, трудно не заметить, как много кода нам требуется для отображения информации о Бобе с использованием print() в Python. Ну и наличие функций, специально предназначенных для того, чтобы конкретный тип-класс определялся в рамках этого класса, лучше организует код.
Вторая функция, которую мы здесь написали, называется grow_person(). Она увеличивает возраст человека на заданное пользователем количество лет. Логично сделать её функцией класса, так как она связана с нашим классом Person. Код в конечном итоге выглядит гораздо более чистым и удобным для восприятия!
Заключение
Вот и всё. Вы прошли вводный курс, посвящённый классам Python.