setter和getter的问题

2024-04-26 18:14:21 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我尝试在python中为一个类使用setter和getter,我希望将setter与其他指令一起使用,因此在设置属性值时,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"

所以在这个例子中我想做的是当x值被赋值时打印“赋值”,但到目前为止还不起作用。你知道吗

我的问题是。我做错什么了吗?我错过什么了吗?或者这不是创先争优的工作方式?你知道吗

谢谢


Tags: testselfnone属性valuevardef指令
2条回答

改变

class test:

收件人:

class test(object):

在Python2.x中,只有从对象继承时才能使用描述符。(这是一个向后兼容的东西)。幸运的是,Python3.x已经解决了这个问题

在这一点上,没有自我:

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

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

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

或者通常使用class属性。你知道吗

class test:
      x = None

如果你不确定是哪一种,那就用第一种;在你对差异更有信心之前,使用这种模式会让你不那么困惑。你知道吗

相关问题 更多 >