【发布时间】:2014-10-20 02:08:00
【问题描述】:
我有以下 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._voltage)
a._voltage = '500000'
print(a._voltage)
编辑:
这个问题的重点是要了解,财产如何取代旧的 多变的。不知何故,每个人都只是指出 Python 正在走向成熟,并且 我们有责任不使用“私有”变量,因为它们是 在 python 中可见。但是没有人指出您只需将旧变量转入 这种情况
voltage
私人的
_voltage
并用属性替换旧变量(电压)
@property
def voltage(self):
这将使您访问此类中的属性的方式保持不变,因此没有人 使用此类的人必须更改他们的代码。
——就像你访问变量的方式一样,因为 您仍然可以像变量一样访问该属性——例如:
a.voltage = 'over 9000'
但它为此类开发人员提供了更多控制权(将电压变为只读)。我只是 觉得没有人真正以可以理解的方式解释属性的机制...... -> 虽然我先用谷歌搜索,但我无法理解属性。 无论如何...有点可笑,因为它现在似乎没有任何困难。
干杯
尼米
【问题讨论】:
-
我在您的代码中没有看到任何将
_voltage指定为只读的内容。如果您想要只读语义,则必须使用 属性,而不是支持变量。 -
在 Python 中无法做到这一点。 Python 仅适用于同意的成年人。如果您不相信某人不会访问您的私有属性,请不要给他们您的对象。
-
作为其他cmets的补充,这里的属性是
voltage而不是_voltage。 -
感谢您的评论。我没想到支持变量是他们的。我想我现在明白了。
标签: python syntax properties