首页 > 解决方案 > 在python中的私有变量上使用属性设置器可以吗?

问题描述

在下面的代码片段中,我在 x 属性上使用了一个 setter(我想保持私有)

class test:

def __init__(self, pos, x):

    self._pos = pos
    self.x = x       # Want to be a private variable, eg. self._x


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


@x.setter
def x(self, x):
    # Logic for setting x
    if self._pos == 'long':
        self._x = -1 * abs(x)
    elif self._pos == 'short':
        self._x = abs(x)
    else:
        raise ValueError('$$ pos must be long or short')

问题是我最终得到了两个属性 self.x 和 self._x 。因为我希望 x 是私有的 - 我只想拥有 self._x (and discard self.x) 。代码中缺少什么?

标签: pythonclassoopobject

解决方案


推荐阅读