为什么这个类会出现“缺少1个位置参数”错误?

2024-03-29 05:05:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一节简单的课。我想使用private属性设置periodicity属性,该属性在用于设置public属性之前经过测试。我在类模块中传递self,当我运行测试代码时,函数似乎需要两个参数。我认为它应该忽略self并请求一个freq参数。我试着“pythonic”并且用@property.setter。我需要更改属性呼叫吗?如果我从set_periodicity中删除self,它表示它不识别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")





Tags: 模块selfmod参数if属性defproperty
1条回答
网友
1楼 · 发布于 2024-03-29 05:05:40

属性不接受任何参数,也不可调用。试试这个:

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"

相关问题 更多 >