Python只读属性是可写的

时间:2014-08-26 16:47:36

标签: 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._voltage)

a._voltage = '500000'

print(a._voltage)

修改

这个问题的关键是要了解一个财产如何取代旧财产 变量。不知何故,每个人都只是指出Python即将成熟,而且 我们有责任不使用“私人”变量,因为它们是 在python中可见。但是没有人指出你只是把旧的变量改成了 这种情况

voltage

私人

_voltage

并用属性

替换旧变量(电压)
@property
def voltage(self):

这会让你在这个类中访问属性的方式相同,所以没有人 谁使用这个类必须改变他们的代码。

- 就像你访问变量一样,因为 您仍然可以像变量一样访问该属性 - 例如:

a.voltage = 'over 9000'

但是它为这个类的开发人员提供了更多的控制权(将电压转为只读)。我只是 我觉得没有人能以一种可以理解的方式解释房产的力学...... - >虽然我先用谷歌搜索,但我无法理解属性。 无论如何......有点荒谬,因为它现在似乎没有任何困难。

干杯
NIMI

1 个答案:

答案 0 :(得分:2)

这是正常的,因为Python不是束缚&纪律语言。 没有真正等同于'private',但有时会使用带有两个前导下划线的属性,尽管这些属性旨在避免在出现问题时出现问题。 一个前导下划线是为了避免在使用from xx import *导入时导入此内容。