<hr class=“my12大纲无baw0 bb bc-POWER-400”/
想改进这个问题吗?编辑这篇文章,更新这个问题,以便用事实和引文来回答。
三个月前关闭了
我不知道属性何时应该是私有的,以及是否应该使用属性
我最近读到setter和getter不是pythonic,但是使用属性装饰器是可以的
但是如果我有一个属性,它不能从类外设置,但可以读取(只读属性)。这个属性应该是私有的吗?我说的私有是指下划线,比如self.\ux?
如果是,那么我如何在不使用getter的情况下阅读它?
我现在知道的唯一方法就是写作
@属性
def x(自我):
返回自我
这样,我可以通过obj.x读取属性,但我不能设置它obj.x=1,所以它很好
但我真的应该关心设置不能设置的对象吗?也许我应该离开它。但我不能使用下划线,因为读取obj.\ux对于用户来说很奇怪,所以我应该使用obj.x,然后用户又不知道他不能设置此属性
你的观点和做法是什么
就我的两分钱,塞拉斯·雷走上了正确的道路,但我想添加一个例子。;-)
Python是一种类型不安全的语言,因此您必须始终信任代码的用户,让他们像理性(明智)的人一样使用代码
根据政治公众人物8:
仅对非公共方法和实例变量使用一个前导下划线
若要在类中具有“只读”属性,可以使用@property装饰,在使用新样式的类时,需要从对象继承
示例:
A类(对象):
…定义初始化(self,a):
…自我。_a=a
...
…@财产
…定义a(自我):
…回归自我
...
>;>;>;a=a(‘测试’)
>;>;>;a.a
“测试”
>;>;>;a.a='pleh'
回溯(最近一次呼叫最后一次):
文件“<;stdin>;“,第1行,在<;模块>;
AttributeError:无法设置属性