Aar*_*lay 24 python properties
我有一个具有属性的类,我希望将其转换为属性,但此属性设置在其中__init__.不知道应该怎么做.没有设置这个属性__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"
Run Code Online (Sandbox Code Playgroud)
但是一旦初始化需要发生,__init__它会变得更复杂,我不确定正确的行动方案.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None
Run Code Online (Sandbox Code Playgroud)
奇怪的是,以下似乎工作但闻起来非常糟糕.
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
Run Code Online (Sandbox Code Playgroud)
设置属性的正确方法是什么__init__?
谢谢,亚伦.
Flo*_*yer 23
我没有看到您的代码存在任何实际问题.在__init__,类完全创建,因此可访问属性.
class STransaction(object):
"""A statement transaction"""
def __init__(self, date):
self._date = None #1
self.date = date #2
Run Code Online (Sandbox Code Playgroud)
如果要在self._date不执行setter的情况下设置代理对象,请使用#1行.如果您想在启动时执行setter,请使用#2.两种方式都是正确的,这只是你需要的问题.
| 归档时间: |
|
| 查看次数: |
16584 次 |
| 最近记录: |