我看到这样的代码:
@property
def entity_class(self):
return 'common'
正如它所做的那样 - 它返回一个常量值,我在想是否可以用它替换它:
entity_class = 'common'
但我怀疑这种改变可能会破坏某些东西。除了使entity_class
可写之外,这种变化是否会产生一些影响?为什么有人需要禁止更改属性?
答案 0 :(得分:1)
您可以使用class属性安全地替换该属性,是的。
唯一会破坏的是希望ClassObject.entity_class
返回property
对象而不是常量值的代码。实例属性访问不变。
当然,您现在可以在实例上设置该属性,而property
对象则不能。如果有人这样做,您的代码可能会中断,但代码会尝试设置ClassObject.entity_class
(因此替换属性对象)。对于具有良好测试套件的代码,这应该不是真正的问题。
答案 1 :(得分:1)
我不会改变它。
我已经看到很多错误都是通过这种微不足道的变化而添加的。
是的,如果您将来尝试设置它可能会出错,但是如果您将其保留为属性,则会以一种非常容易理解的方式出错。如果你使它可写,可以设置错误将出现在看似无关的区域,使得追踪更加困难。
一旦你改变了它,它也不清楚它是不是要改变它。
如果你想改变它,你所做的只是保存2行代码。