2014-01-30 3 views
0

Привет, я пытаюсь работать с сеттерами и геттерами в python для одного класса, и я хочу использовать setter с другой инструкцией, поэтому при настройке значения свойства установщик делает больше, чем назначает значение для свойства. Возможно, я смущен тем, как работают сеттер и геттер. Вот пример:проблема с сеттерами и геттерами

class test: 
     self.x = None 

     @property 
     def var(self): 
      return self.x 

     @var.setter 
     def var(self, value): 
      print("Assigning Value") 
      self.x = value 

v = test() 
v.var = "hello" 

Так что я пытаюсь сделать в этом примере для печати «Присвоение значение», когда х присваивается значение, но до сих пор не работает.

Мой вопрос есть. Я что-то делаю неправильно? Я пропущу что-то? Или это не так, как работают сеттеры и геттеры?

Благодаря

ответ

4

Изменить

class test: 

To:

class test(object): 

В Python 2.x можно использовать только дескрипторы, если наследование от объекта. (Его обратная совместимость). К счастью, это была решена в Python 3.x

+0

Вы были правы! спасибо –

0

На данный момент нет самостоятельной:

class test: 
     self.x = None 
#  ^^^^^ BAD 

изменить его либо установить в инициализаторе:

class test: 
    def __init__(self): 
     self.x = None 

или использовать класса.

class test: 
     x = None 

Если вы не уверены в том, что, идите первым; это будет путать вас меньше, чтобы использовать этот шаблон, пока вы не будете более уверены в различии.

+0

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

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