Tengo una clase con un atributo que deseo convertir en una propiedad, pero este atributo se establece en __init__
. No estoy seguro de cómo se debe hacer esto. Sin ajustar el propert en __init__
esto es fácil y funciona bienCómo establecer una propiedad de python en __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"
Pero una vez que la inicialización tiene que ocurrir en __init__
se vuelve más complicado y no estoy seguro de la línea de acción correcta.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
extraño para mí, la siguiente parece funcionar, pero huele muy 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
¿Cuál es la forma correcta de ir sobre la configuración de las propiedades en __init__
?
Gracias, aaron.
En general, ¿hay alguna razón para establecer 'self._date = None' antes de actualizar la propiedad ya que se sobrescribirá inmediatamente con el nuevo valor? –
No. Solo tiene sentido si la segunda línea está ausente para evitar que se invoque el captador sin ningún atributo "_date" establecido – nerdoc