塞特犬和吸气剂的问题

时间:2014-01-30 01:56:15

标签: python

您好我正在尝试使用python中的setter和getter进行一个类,并且我想将setter与其他指令一起使用,因此在设置属性值时,setter不仅仅将值赋给属性。也许我对setter和getter是如何工作感到困惑。这是一个例子:

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"

所以我在这个例子中想要做的是在分配x值时打印“赋值”,但到目前为止还没有工作。

我的问题是。我做错了什么?,我想错过什么吗?或者这不是主持人和吸气者的工作方式?

由于

2 个答案:

答案 0 :(得分:4)

更改

class test:

要:

class test(object):

在Python 2.x中,如果继承自object,则只能使用描述符。 (它是向后兼容的东西)。幸运的是,这已在Python 3.x

中得到解决

答案 1 :(得分:0)

此时,没有自我:

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

将其更改为在初始值设定项中设置:

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

或正常使用类属性。

class test:
      x = None

如果你不确定哪一个,请先选择第一个;在你对这种差异更有信心之前,你会更少地使用这种模式。