Python只读属性
我不知道何时属性应该是私有的,是否应该使用属性。
我最近读到,setter和getters不是pythonic,我应该使用属性装饰器。没关系。
但是,如果我有属性,那一定不能从类外部设置,而是可以读取的(只读属性)。这个属性应该是私有的self._x
吗?我所说的私有是指下划线吗?如果是,那么不使用getter怎么读?我现在知道的唯一方法是写
@property
def x(self):
return self._x
这样我就可以读取属性,obj.x
但是我无法设置它,obj.x = 1
所以很好。
但是我真的应该关心设置不应该设置的对象吗?也许我应该离开它。但是再说一次,我不能使用下划线,因为obj._x
对用户而言,阅读很奇怪,因此我应该使用下划线obj.x
,然后,用户又一次不知道他一定不能设置此属性。
您的看法和做法是什么?