So legen Sie eine Python-Eigenschaft in __init __ @ fe

Ich habe eine Klasse mit einem Attribut, das ich in eine Eigenschaft verwandeln möchte, aber dieses Attribut wird in @ festgeleg__init__. Ich bin mir nicht sicher, wie das gemacht werden soll. Ohne die Eigenschaft in @ zu setz__init__ das ist einfach und funktioniert gut

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"

Aber sobald die Initialisierung in @ erfolgen mu__init__ es wird komplizierter und ich bin mir nicht sicher, wie ich vorgehen soll.

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

Seltsamerweise scheint das Folgende zu funktionieren, riecht aber sehr schlecht.

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

Was ist die richtige Vorgehensweise zum Festlegen von Eigenschaften in__init__?

anke, Aaro

Antworten auf die Frage(4)

Ihre Antwort auf die Frage