Как связать две переменные в классе, чтобы одна содержалась в другой?

начал немного учить питон и застрял как мне кажется на очень простой вещи. Я думал, что если я поменяю значение в переменой name, то значение применится и к переменной description, но так не произошло. Экземпляры от класса я не создаю, а использую просто в качестве хранилища строковых значений, которые потом используются в коде.

Код:

class Data:
    name = "Tom"
    description = f'His name is {name}'
    
Data.name = "Roman"
print(Data.name) // "Roman"
print(Data.description) //"His name is Tom"

Ответы (1 шт):

Автор решения: Alpensin

Обычно всё же используют экземпляры класса для для хранения данных. Для удобства посмотрите в сторону NamedTuple или Dataclasses. Но если делать как решили вы, то можно воспользоваться декораторами

class Data:
  name = "Tom"

  @classmethod
  @property
  def description(cls):
    return f'His name is {cls.name}'

Data.name = "Tom"
print(Data.name) # Tom
print(Data.description) # His name is Tom
Data.name = "Roman"
print(Data.name) # Roman
print(Data.description) # His name is Roman
→ Ссылка