如何在Python中创建没有getter的setter?

Mat*_*aly 5 python getter setter

class My_Class:
    def __init__(self):
        self._x = 0

    @property
    def x(self):
        return self._x

    @x.setter
    def x(self, x):
        self._x = x
Run Code Online (Sandbox Code Playgroud)

如果我从上面的代码中删除以下 getter:

@property
def x(self):
    return self._x
Run Code Online (Sandbox Code Playgroud)

代码停止工作。如何在没有 getter 的情况下创建 setter?

zvo*_*one 6

property函数不必用作装饰器:装饰器可以用作函数:

class My_Class:
    def _set_x(self, value):
        self._x = value

    x = property(fset=_set_x)  # now value has only a setter

    del _set_x  # optional: delete the unneeded setter function

instance = My_Class()
instance.x= 8  # the setter works

print(instance._x) # the "private" value

print(instance.x) # raises: AttributeError: unreadable attribute
Run Code Online (Sandbox Code Playgroud)