Быстрый в изучении - мощный в программировании
>> Telegram ЧАТ для Python Программистов

Свободное общение и помощь советом и решением проблем с кодом! Заходите в наш TELEGRAM ЧАТ!

>> Python Форум Помощи!

Мы создали форум где отвечаем на все вопросы связанные с языком программирования Python. Ждем вас там!

>> Python Канал в Telegram

Обучающие статьи, видео и новости из мира Python. Подпишитесь на наш TELEGRAM КАНАЛ!

Свойства класса - ООП Python

Свойства класса Python

Классы нового стиля позволяют создать идентификатор, через который можно получить, изменить или удалить значение атрибута класса. Создается такой идентификатор с помощью функции property(), форма функции:

<Свойства> = property(<Чтение>[, <Запись>[, <Удаление>[, <Строка документирования>]]])

В первых трех параметрах указывается ссылка на соответствующий метод класса. При попытке получить значение будет вызван метод, указанный в первом параметре. При операции присваивания значения будет вызван метод, указанный во втором параметре. Этот метод должен принимать один параметр. В случае удаления атрибута вызывается метод, указанный в третьем параметре. Если в качестве какого-либо параметра задано значение None, то это означает, что соответствующий метод не поддерживается. Рассмотрим свойства класса на примере.

Свойства класса

class Class1(object):
    def __init__(self, value):
        self.__var = value
    def getVar(self):        # Чтение
        return self.__var
    def setVar(self, value): # Запись
        self.__var = value
    def delVar(self):        # Удаление
        del self.__var
    v = property(getVar, setVar, delVar, "Строка документирования")
c1 = Class1(5)
c1.v = 35                    # Вызывается метод setVar()
print c1.v                   # Вызывается метод getVar()
del c1.v                     # Вызывается метод delVar()

В Python 2.6 были добавлены методы getter(), setter() и deleter(), позволяющие создавать свойства классов с помощью декораторов функций. Пример использования декораторов приведен ниже.

Методы getter(), setter() и deleter()

class Class1(object): # Работает, начиная с версии Python 2.6
    def __init__(self, value):
        self.__var = value
    @property
    def v(self):                       # Чтение
        return self.__var
    @v.setter
    def v(self, value):                # Запись
        self.__var = value
    @v.deleter
    def v(self):                       # Удаление
        del self.__var
c1 = Class1(5)
c1.v = 35                              # Запись
print c1.v                             # Чтение
del c1.v                               # Удаление

После программирования на любимом языке программирования можно сесть и поиграть в videoslotsonline.ru/igrovoj-avtomat-robin-gud.html игровой автомат Робин-Гуд как бесплатно так и с вложением денег для получения с этого выгоды. Научитесь профессиональной игры в бесплатном режиме и начните обыгрывать автомат в реальной игре.