Итак, я недавно нырнул в ООП, и до сих пор все идет гладко. Хотя у меня нет проблем как таковых, есть замечательная функция, которая, я надеюсь, существует, хотя я не могу найти документацию по указанной функции.Как изменить значение одного атрибута, изменив значение другого? (зависимые атрибуты)
При назначении атрибутов объектам я часто нахожу, что мне приходится изменять атрибуты, которые зависят от других, скажем, света и тьмы. Вот пример:
class shade:
def __init__(self, light):
self.light=light
self.darkness=100-light
def __str__(self):
return (str(self.light) + ',' + str(self.darkness))
>>> shade1=shade(30,70)
>>> shade1.light
30
>>> shade1.darkness
70
Теперь, в то время как это круто и все, что я хотел бы тот же процесс происходит, но в пределах того же объекта, если изменение одного атрибута происходит. Если я сброшу свойство света (о, да), я хочу, чтобы тьма соответствовала incr/decr. Я могу сделать это с помощью функции, если она работает, чтобы изменить свойство света, возвращая новое значение света/темноты, но я бы хотел сделать это, если бы я изменил свойство света просто путем переустановки его значения , ж/из использования функций, например:
>>> shade1.light=50
>>> shade1.light
50
>>> shade1.darkness
50
Кроме того, как я новичок в ООП, если кто-нибудь знает некоторые хорошие учебники, которые бы также массивное помощь.
Заранее спасибо.
Прежде всего. ваш класс не будет работать. у подрядчика есть только один аргумент, и вы ставите два, когда делаете класс «тень» (30,70) ' – Marcin
Я знаю, это было намеренно, отсутствие света - это темнота, это на 100% зависит от интенсивности света, поэтому я думал, что нужно установить интенсивность света и искупить интенсивность тьмы. Это отлично работает, если вы запустите его, кстати. – user2901512
Его точка в том, что это не так, конструктор определяется как один аргумент, но вы проходите два. – tripleee