我有一個屬性類,我希望變成一個屬性,但該屬性設置在__init__
。不知道這應該如何完成。如果沒有__init__
設置PROPERT這很簡單和行之有效的如何在__init__中設置python屬性
import datetime
class STransaction(object):
"""A statement transaction"""
def __init__(self):
self._date = None
@property
def date(self):
return self._date
@date.setter
def date(self, value):
d = datetime.datetime.strptime(value, "%d-%b-%y")
self._date = d
st = STransaction()
st.date = "20-Jan-10"
但是一旦初始化需要發生在__init__
它變得更復雜,我不知道正確的行動當然。
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
奇怪的是,以下似乎工作,但聞起來非常糟糕。
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
self.date = date
@property
def date(self):
return self._date
@date.setter
def date(self, value):
d = datetime.datetime.strptime(value, "%d-%b-%y")
self._date = d
在__init__
中設置屬性的正確方法是什麼?
謝謝, 亞倫。
一般來說,在更新屬性之前是否有任何理由設置'self._date = None',因爲它會立即被新值覆蓋? – 2010-10-15 13:39:26
不是。只有第二行不存在纔有意義,因爲它沒有設置屬性「_date」來調用getter。 – nerdoc 2013-11-17 14:52:56