Como definir uma propriedade python em __init__
Eu tenho uma classe com um atributo que desejo transformar em uma propriedade, mas esse atributo é definido dentro__init__
. Não tenho certeza de como isso deve ser feito. Sem definir o propert em__init__
isso é fácil e funciona bem
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"
Mas uma vez que a inicialização precise ocorrer em__init__
fica mais complicado e não tenho certeza do curso de ação correto.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
Estranhamente para mim, o seguinte parece funcionar, mas cheira muito mal.
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
Qual é a maneira correta de definir propriedades em__init__
?
Obrigado, Aaron.