2017-08-08 60 views
0

我有一個屬性是一個數字。我想有一個變量是值減1:如何獲取物業的價值 - 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

+3

你的名字的參數一樣的基礎字段? –

+2

您必須創建該類的一個實例! – cmdLP

+1

'temp_conn.t'是類'temp_conn'的屬性對象(一個Python描述符)。爲了它的功能,它必須用該類的**實例**而不是類本身來調用。 – martineau

回答

0

您需要啓動類第一

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 
+0

'In [3]:'?我以前從來沒有見過。 – drako234

+0

@ drako234我在shell中運行python – af3ld