我在 Python 2.7x 中有一个现有的示例类
class Example(object):
a = None
b = None
c = None
和一个现有的实例
anInstance = Example()
anInstance.a = 100
anInstance.b = 200
anInstance.c = 300
我一直在重构/清理一些代码,现在知道这anInstance.c
是一项很少使用的昂贵操作。
在一个完美的世界里,我会这样做:
class Example(object):
_c = None
@property
def c(self):
if self._c is not None:
self._c = DO EXPENSIVE STUFF HERE
return self._c
问题是我现在不能改变class Example
。[所以快速修复是将其设置为一个函数,并将每个更改obj.c
为obj.c()
]
据我所知,除非我更改对象,否则我无法动态分配属性/记忆。这种理解正确吗?我预计会在这里失望,我只是想要确认。