一尘不染

Python只读属性

python

我不知道何时属性应该是私有的,是否应该使用属性。

我最近读到,setter和getters不是pythonic,我应该使用属性装饰器。没关系。

但是,如果我有属性,那一定不能从类外部设置,而是可以读取的(只读属性)。这个属性应该是私有的self._x吗?我所说的私有是指下划线吗?如果是,那么不使用getter怎么读?我现在知道的唯一方法是写

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

这样我就可以读取属性,obj.x但是我无法设置它,obj.x = 1所以很好。

但是我真的应该关心设置不应该设置的对象吗?也许我应该离开它。但是再说一次,我不能使用下划线,因为obj._x对用户而言,阅读很奇怪,因此我应该使用下划线obj.x,然后,用户又一次不知道他一定不能设置此属性。

您的看法和做法是什么?


阅读 146

收藏
2020-12-20

共1个答案

一尘不染

通常,在编写Python程序时应假定所有用户都同意成年人,因此他们有责任自己正确使用事物。但是,在极少数情况下,无法设置属性(例如派生值或从某个静态数据源读取的值)就没有意义,仅使用吸气剂的属性通常是首选模式。

2020-12-20