Python属性返回常量

时间:2015-08-18 14:51:08

标签: python properties

我看到这样的代码:

@property
def entity_class(self):
    return 'common'

正如它所做的那样 - 它返回一个常量值,我在想是否可以用它替换它:

entity_class = 'common'

但我怀疑这种改变可能会破坏某些东西。除了使entity_class可写之外,这种变化是否会产生一些影响?为什么有人需要禁止更改属性?

2 个答案:

答案 0 :(得分:1)

您可以使用class属性安全地替换该属性,是的。

唯一会破坏的是希望ClassObject.entity_class返回property对象而不是常量值的代码。实例属性访问不变。

当然,您现在可以在实例上设置该属性,而property对象则不能。如果有人这样做,您的代码可能会中断,但代码会尝试设置ClassObject.entity_class(因此替换属性对象)。对于具有良好测试套件的代码,这应该不是真正的问题。

答案 1 :(得分:1)

我不会改变它。

我已经看到很多错误都是通过这种微不足道的变化而添加的。

是的,如果您将来尝试设置它可能会出错,但是如果您将其保留为属性,则会以一种非常容易理解的方式出错。如果你使它可写,可以设置错误将出现在看似无关的区域,使得追踪更加困难。

一旦你改变了它,它也不清楚它是不是要改变它。

如果你想改变它,你所做的只是保存2行代码。