我有一个简单的类。我想periodicity
使用私有属性设置属性,该属性在用于设置公共属性之前经过测试。我在类模块中传递 self ,当我运行测试代码时,该函数似乎需要 2 个参数。我认为它应该忽略self
并要求一个freq
参数。我试图成为“pythonic”并@property
与.setter
. 我需要更改属性调用吗?如果我self
从中删除set_periodicity
它说它无法识别self
.
class ModelSetUp:
def __init__(self):
self.periodicity= None
@property
def set_periodicity(self,freq):
self.periodicity = self._periodicity
@set_periodicity.setter
def set_periodicity(self,freq):
if freq in ("Q","S","A"):
self._periodicity = freq
else:
raise ValueError("Frequency Must Be Q, S or A")
if __name__=="__main__":
mod = ModelSetUp()
mod.set_periodicity("Q")
属性不接受任何参数,也不可调用。试试这个:
class ModelSetUp:
def __init__(self):
self._periodicity = None
@property
def periodicity(self):
return self._periodicity
@periodicity.setter
def periodicity(self, freq):
if freq in ("Q","S","A"):
self._periodicity = freq
else:
raise ValueError("Frequency Must Be Q, S or A")
if __name__=="__main__":
mod = ModelSetUp()
mod.periodicity = "Q"
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句