Статья Автор: Омарбек Нұр-Мұхаммед

Примеры 2

В этом примере происходит создание дополнительного свойства для объекта p3:

class Phone:
    color = (0, 0, 0)

    def output(self):
        print(self.color)


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

p3.background_color = (255, 255, 255)  # новое свойство

p1.output()  # (0, 0, 0)
p2.output()  # (0, 0, 0)
p3.output()  # (255, 0, 0)

print(p3.background_color)  # (255, 255, 255)

У объекта p3 теперь два свойства. Это означает, что у разных экземпляров одного и того же класса - разный набор свойств. Это плохая практика и в больших программах такая ситуация может привести к проблемам.

 

В объектно-ориентированном программировании (ООП) есть правило: объект хранит в себе свойства, но они используются только через методы. Это правило защищает объекты от случайных изменений. Чем больше программа, тем важнее придерживаться правил ООП, чтобы обезопасить себя от ошибок.

 

Для свойств можно использовать методы get() (получить) и set() (задать):

class Phone:
    color = (0, 0, 0)
    background_color = (255, 255, 255)

    def get_color(self):
        return self.color

    def get_background_color(self):
        return self.background_color

    def set_color(self, new_color):
        self.color = new_color

    def set_background_color(self, new_background_color):
        self.background_color = new_background_color

    def output(self):
        return f"Цвет: {self.get_color()}\nЦвет заднего фона: {self.get_background_color()}\n"


p1 = Phone()
p2 = Phone()

p3 = Phone()
p3.color = (255, 0, 0)

print(p1.output())
print(p2.output())
print(p3.output())

# Цвет: (0, 0, 0)
# Цвет заднего фона: (255, 255, 255)

# Цвет: (0, 0, 0)
# Цвет заднего фона: (255, 255, 255)

# Цвет: (255, 0, 0)
# Цвет заднего фона: (255, 255, 255)
Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать