Использование параметра класса в теле класса
Есть класс, который принимает параметр. Проблема возникает при попытке использования этого параметра в теле класса (не в функции), как на примере ниже. Какие существуют способы реализации представленного ниже функционала. Спасибо.
class Test:
def __init__(self, var):
self.var = var
new_var = 10 * self.var # Не работает
if self.var:
other_var = self.var / 2 # Не работает
Ответы (1 шт):
Автор решения: CrazyElf
→ Ссылка
Класс ничего не знает об экземплярах класса, вы должны каким-то образом передавать информацию из создаваемых экземпляров в основной класс. Ну, вернее, можно исхитриться при желании, и найти например в глобальных переменных все экземпляры данного класса, но это выглядит не очень прямо.
В общем, учитывая вышесказанное, можно сделать примерно так:
class Test:
def __init__(self, var):
self.var = var
Test.new_var = 10 * self.var
if self.var:
Test.other_var = self.var / 2
t = Test(42)
del t
# экземпляра больше нет, но он уже передал классу нужную информацию
print(Test.new_var)
print(Test.other_var)
# 420
# 21.0