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.

questionAnswers(2)

yourAnswerToTheQuestion