我不知道何时属性应该是私有的,是否应该使用属性。
我最近读到,setter和getters不是pythonic,我应该使用属性装饰器。没关系。
但是,如果我有属性,那一定不能从类外部设置,而是可以读取的(只读属性)。这个属性应该是私有的self._x吗?我所说的私有是指下划线吗?如果是,那么不使用getter怎么读?我现在知道的唯一方法是写
self._x
@property def x(self): return self._x
这样我就可以读取属性,obj.x但是我无法设置它,obj.x = 1所以很好。
obj.x
obj.x = 1
但是我真的应该关心设置不应该设置的对象吗?也许我应该离开它。但是再说一次,我不能使用下划线,因为obj._x对用户而言,阅读很奇怪,因此我应该使用下划线obj.x,然后,用户又一次不知道他一定不能设置此属性。
obj._x
您的看法和做法是什么?
通常,在编写Python程序时应假定所有用户都同意成年人,因此他们有责任自己正确使用事物。但是,在极少数情况下,无法设置属性(例如派生值或从某个静态数据源读取的值)就没有意义,仅使用吸气剂的属性通常是首选模式。