Использование параметра класса в теле класса

Есть класс, который принимает параметр. Проблема возникает при попытке использования этого параметра в теле класса (не в функции), как на примере ниже. Какие существуют способы реализации представленного ниже функционала. Спасибо.

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
→ Ссылка