4. Примеры 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)

time 1000 ms
memory 256 Mb

Комментарий учителя