Освой Python играючи

Сайт Александра Климова

Шкодим

/* Моя кошка замечательно разбирается в программировании. Стоит мне объяснить проблему ей - и все становится ясно. */
John Robbins, Debugging Applications, Microsoft Press, 2000

Python: Классы

Создание простейшего класса и его вызов.


class Cat:
    pass # empty block
    
cat = Cat()
print(cat) # <__main__.Cat object at 0x000002A140DC2DA0>

При создании класса используется ключевое слово class и указывается имя. Далее идёт блок выражений для тела класса. В нашем примере блок пустой, поэтому был использован оператор pass.

Для создания экземпляра класса используем имя класса со скобками. Для проверки успешности создания экземпляра выводим информацию на экран. Мы получим не только имя класса в модуле __main__, но и адрес в памяти компьютера (у вас будет другой адрес).

Классы могут иметь методы.


class Cat:
    def sayMeow(self):
        print('Meow!')
    
cat = Cat()
cat.sayMeow()

Метод __init__

Метод __init__ (двойные подчёркивания в начале и в конце имени) запускается, когда объект класса реализуется. Метод полезен для инициализации чего-либо для данного объекта.

Создадим метод __init__(), который будет принимать параметр name. Далее мы создаём новое поле с именем self.name.

Для создания нового экземпляра cat класса Cat мы указываем имя класса, после которого указываем аргументы в скобках. Метод __init__() мы не вызываем явным образом.


class Cat:
    
    def __init__(self, name):
        self.name = name
        
    def sayMeow(self):
        print('Мяу! Mеня зовут', self.name)

cat = Cat('Барсик')
cat.sayMeow()

Наряду с методом __init__, существует и другой специальный метод __del__, который вызывается тогда, когда объект собирается умереть, т.е. когда он больше не используется, и занимаемая им память возвращается операционной системе для другого использования. Метод __del__ запускается лишь тогда, когда объект перестаёт использоваться, а поэтому заранее неизвестно, когда именно этот момент наступит.

Переменные класса и объекта

Существует два типа полей: переменные класса и переменные объекта.

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

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

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

Можно создавать базовые классы и наследоваться от них.

Метаклассы

Абстрактные классы

Реклама