Назад | Python 3 учебник | Вперёд
Да, товарищи, Python даже ООП поддерживает.
Будем считать, что основные принципы объектно-ориентированного программирования вам уже известны. Классы в Python объявляются так:
1 2 |
class Monster: pass |
После этого мы можем создавать экземпляры класса и присваивать значения различным его атрибутам:
1 2 3 4 5 |
m = Monster() m.health = 100.0 m.ammo = 93 print(m.health) |
Обратите внимание, что мы не используем ключевого слова new, как это сделано в большинстве языков программирования, а просто пишем имя класса со скобками.
Класс может содержать в себе методы, а также в классе при объявлении уже могут быть объявлены какие-нибудь атрибуты с первоначальными значениями:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
class Monster: health = 10.0 def hit(self, damage): self.health = self.health - damage m = Monster() m.ammo = 93 print(m.health) m.hit(3) print(m.health) |
Обратите внимание, что внутри определения класса Monster мы описали атрибут health с первоначальным значением 10. Также мы описали метод hit, уменьшающий значение атрибута health на переданное значение. Первым параметром методов класса в Python всегда идёт self, куда передаётся ссылка на текущий экземпляр объекта.
В Python есть некоторое подобие приватных атрибутов и методов, для этого добавляется префикс из двух подчёркиваний. В этом случае к такому имени нельзя обратиться по самому имени, но если очень хочется, то всё ещё можно обратиться по __classname__identifier:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
class Monster: __health = 10.0 # private atribute def hit(self, damage): # private method self.__health = self.__health - damage def __some(self): print(self.__health) m = Monster() # Так не получится # print(m.__health) # А вот так можно, но это для особых случаев print(m._Monster__health) m.hit(3) print(m._Monster__health) # Аналогично для методов m._Monster__some() |
Назад | Python 3 учебник | Вперёд