В этом примере происходит создание дополнительного свойства для объекта 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()
p2.output()
p3.output()
print(p3.background_color)
У объекта 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())