J'ai une classe avec un attribut que je souhaite transformer en propriété, mais cet attribut est défini en __init__
. Je ne sais pas comment cela devrait être fait. Sans régler l'propert dans ce __init__
est facile et fonctionne bienComment définir une propriété python dans __init__
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"
Mais une fois l'initialisation doit se produire dans __init__
cela devient plus compliqué et je ne suis pas sûr de la bonne mesure à prendre.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
Étrangement pour moi, ce qui suit semble fonctionner mais sent très mauvais.
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
Quelle est la bonne façon d'aller sur la définition des propriétés dans __init__
?
Merci, aaron.
En général, existe-t-il une raison pour définir 'self._date = None' avant la mise à jour de la propriété, car elle sera immédiatement remplacée par la nouvelle valeur? –
Non. Cela n'a de sens que si la deuxième ligne est absente pour empêcher l'appel du getter sans attribut "_date" – nerdoc