2015-02-22 3 views
1

У меня есть класс, который использует переменный для создания строки, как так:Как повторно инициализировать переменную в Python?

av = "Core/" + cuname + ">> " 

В конкретном методе в классе, переменная cuname изменяются. Однако, когда будет предложено, переменная av по-прежнему будет использовать предыдущее значение. Есть ли способ «повторно инициализировать» переменную, чтобы получить новое значение cuname?

EDIT: Кстати, я попробовал пересчитать переменную, но она остается неизменной. (Я думаю, это потому, что класс постоянно используется с помощью цикла)

+1

Не могли бы вы добавить еще какой-нибудь код? Вы используете объект или класс? Как вы можете использовать cuname, а не self.cuname, когда cuname является членом класса? –

+1

Не могли бы вы вставить соответствующий код в свой вопрос –

ответ

2

Поскольку у вас есть класс и av переменная в нем, сделать его property части класса

class MyClass: 

    def __init__(self, name): 
     self.cuname = name 

    @property 
    def av(self): 
     return "Core/" + self.cuname + ">> " 


obj = MyClass("thefourtheye") 
print(obj.av) 
# Core/thefourtheye>> 
obj.cuname = "awesome" 
print(obj.av) 
# Core/awesome>> 

av это свойство только для чтения. Поэтому независимо от того, сколько раз будет cuname, av всегда будет давать строку с текущим значением cuname. Поскольку вы создали свойство av, его все еще можно использовать как переменную.

+0

Спасибо. Мне пришлось немного изменить цикл, но это отлично поработало. –

+0

Вы также можете сделать cuname собственностью, чтобы использовать его как переменную, как раньше. –

+0

@ clemos24 Я мог бы, но мы действительно не знаем, что проблема OP :( – thefourtheye

0

Да, вы просто повторно выполнить то же самое утверждение:

av = "Core/" + cuname + ">> " 

снова.

+0

Это не работает. Я не знаю почему, но он все еще возвращает старое значение. –

+0

Я тоже не могу знать, потому что мне не хватает достаточных способностей ясновидения. Вас попросили добавить код в вопрос. –

+0

Теперь не имеет значения. Я нашел решение, но спасибо за попытку помочь! –

1

Если вы используете функцию вместо переменной, вы всегда получите последнее значение:

class myclass(): 
    def av(self): 
     return "Core/" + cuname + ">> " 

Таким образом, вместо того, чтобы использовать аи, теперь использовать self.av().

Смежные вопросы