Cómo configurar una propiedad de Python en __init__

Tengo una clase con un atributo que deseo convertir en una propiedad, pero este atributo se establece dentro de__init__. No estoy seguro de cómo se debe hacer esto. Sin establecer la propiedad en__init__ esto es fácil y funciona bien

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 debe ocurrir en__init__ se vuelve más complicado y no estoy seguro del curso de acción correcto.

class STransaction(object):
    """A statement transaction"""
    def __init__(self, date):
        self._date = None

Extrañamente para mí, lo 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 configurar propiedades en__init__?

Gracias Aaron.

Respuestas a la pregunta(2)

Su respuesta a la pregunta