我有一个属性类,我希望变成一个属性,但该属性设置在__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