Mam klasę z atrybutem, który chcę przekształcić w właściwość, ale ten atrybut jest ustawiony w ramach __init__
. Nie wiem, jak to zrobić. Bez ustawiania propert w __init__
jest to łatwe i działa dobrzeJak ustawić właściwość python w __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"
Ale po inicjalizacji musi nastąpić w __init__
robi się bardziej skomplikowane i nie jestem pewien co do prawidłowego przebiegu działań.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
Zadziwiająco dla mnie, wydaje się, że następujące czynności działają, ale bardzo źle pachnie.
Jaki jest prawidłowy sposób ustawiania właściwości w __init__
?
Dzięki, aaron.
Ogólnie, czy istnieje jakiś powód, aby ustawić "self._date = None" przed aktualizacją właściwości, ponieważ zostanie ona natychmiast zastąpiona nową wartością? –
Nie. Ma sens tylko, jeśli druga linia jest nieobecna, aby uniemożliwić wywołanie gettera bez atrybutu "_date" set – nerdoc