Python只读属性是可写的
我有以下Python代码。我就是找不到 实例变量必须是只读的。谢谢你的帮助Python只读属性是可写的,python,syntax,properties,Python,Syntax,Properties,我有以下Python代码。我就是找不到 实例变量必须是只读的。谢谢你的帮助 class Parrot(object): def __init__(self): self._voltage = '100000' @property def voltage(self): """Get the current voltage.""" return self._voltage a = Parrot() print(a._vo
class Parrot(object):
def __init__(self):
self._voltage = '100000'
@property
def voltage(self):
"""Get the current voltage."""
return self._voltage
a = Parrot()
print(a._voltage)
a._voltage = '500000'
print(a._voltage)
编辑:
这个问题的重点是要理解,一处房产如何能够取代旧房产
变量不知怎的,每个人都只是指出Python是关于成熟的,而且
我们有责任不使用“私有”变量,因为它们是
在python中可见。但是没有人指出你只是把旧的变量
这个案子
voltage
私人的
_voltage
并用属性替换旧变量(电压)
@property
def voltage(self):
这将使您访问此类中属性的方式保持不变,因此
使用此类的用户必须更改其代码
--就像你访问变量的方式,因为
您仍然可以像访问变量一样访问属性,例如:
a.电压='超过9000'
但它为此类的开发人员提供了更多的控制(将电压设置为只读)。我只是
我觉得没有人真正以一种可以理解的方式解释属性的力学。。。
->虽然我先在谷歌上搜索了一下,但我还是无法理解房产。
无论如何。。。有点可笑,因为它现在似乎没有造成任何困难
干杯Nimi是正常的,因为Python不是一种束缚和约束语言。 没有真正等同于“private”的属性,但有时会使用带有两个前导下划线的属性,尽管这些属性被嵌入以避免在操作时出现问题。
在使用xx import*import中的
时,前导下划线只是为了避免导入此内容。我在代码中没有看到任何将\u voltage
指定为只读的内容。如果想要只读语义,必须使用属性,而不是支持变量。Python仅适用于同意的成年人。如果您不信任某人不访问您的私有属性,请不要将对象提供给他们。作为其他注释的补充,此处的属性是voltage
not\u voltage
.Thx,用于注释。我没想到一个支持变量会是他们的。我想我现在明白了区别。文档说明可以使用属性装饰器创建只读变量。我只是想重现结果。有一个只读变量没有什么害处。哦,我想我现在明白了。谢谢你的帮助。