Python属性在构造函数中设置值时不使用setter

Python属性在构造函数中设置值时不使用setter,python,properties,constructor,Python,Properties,Constructor,我有一个带有构造函数和几个属性的类 class Foo(object): def __init__(self, value1): self._value1 = value1 @property def value1(self): return self._value1 @property.setter def value1(self, value): assert value == 1

我有一个带有构造函数和几个属性的类

class Foo(object):
    def __init__(self, value1):
        self._value1 = value1

    @property
    def value1(self):
        return self._value1

    @property.setter
    def value1(self, value):
         assert value == 1
         self._value1 = value
现在,当我在创建对象时设置value1时,并没有使用setter。我注意到这一点是因为在输入错误的值时没有调用断言


如何使构造函数中设置的值使用setter?

通过设置基础变量而不是使用属性,显式绕过setter。删除下划线

def __init__(self, value1):
    self.value1 = value1

解决方案您没有使用
\uuuu init\uuuu
中的属性。那么,不,Python怎么知道对
value1
使用setter呢?参数真的需要使用dunders吗?