Ich habe eine Klasse mit einem Attribut, das ich in eine Eigenschaft verwandeln möchte, aber dieses Attribut wird innerhalb __init__
gesetzt. Nicht sicher, wie das gemacht werden sollte. Ohne Einstellung der propert in __init__
dies ist einfach und funktioniert gutWie Sie eine Python-Eigenschaft in __init__ setzen
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 __init__
erfolgen muss wird es komplizierter, und ich bin nicht sicher, die richtige Vorgehensweise.
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 der richtige Weg, um über das Festlegen von Eigenschaften in __init__
zu gehen?
Danke, aaron.
Gibt es im Allgemeinen einen Grund, 'self._date = None' zu setzen, bevor die Eigenschaft aktualisiert wird, da sie sofort mit dem neuen Wert überschrieben wird? –
Nein. Es macht nur Sinn, wenn die zweite Zeile abwesend ist, um zu verhindern, dass der Getter ohne Attribut "_date" aufgerufen wird. – nerdoc