【问题标题】:How to get the value of a property - 1?如何获得财产的价值 - 1?
【发布时间】:2017-08-08 22:57:34
【问题描述】:

我有一个数字属性。我想要一个该值减去 1 的变量:

class temp_conn:
    def __init__(self):
        self._t = 0
    @property
    def t(self):
        return self._t
    @t.setter
    def t(self,value):
        self._t = value

hist = temp_conn.t - 1

当我这样做时,它告诉我这是一个非法的属性操作数和int,我无法将属性转换为int。如何获得temp_conn.t - 1 的等价物?

【问题讨论】:

  • 你把参数命名为和底层字段一样?
  • 你必须创建一个类的实例!
  • temp_conn.ttemp_conn 类的property object(Python 描述符)。要使其发挥作用,必须使用该类的 instance 而不是类本身来调用它。

标签: python properties type-conversion


【解决方案1】:

你需要先开课

hist = temp_conn().t - 1

但是,您还有其他问题。执行上述代码会引发:

RecursionError: maximum recursion depth exceeded while calling a Python object

您需要更改self.t,因为它与该属性共享一个名称,即该属性将继续调用自身(如上面的错误所示)。

例如:

In [3]: class temp_conn:
   ...:     def __init__(self):
   ...:         self._t = 0
   ...:     @property
   ...:     def t(self):
   ...:         return self._t
   ...:     @t.setter
   ...:     def t(self,value):
   ...:         self._t = value

【讨论】:

  • 什么是'在 [3]:'?我以前从未见过。
  • @drako234 我在 shell 中运行 python
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-11-25
  • 2021-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多