【发布时间】:2013-10-24 21:41:19
【问题描述】:
在一个类中,我想定义 N 个持久属性。我可以按如下方式实现它们:
@property
def prop1(self):
return self.__prop1
@prop1.setter
def prop1(self, value):
self.__prop1 = value
persistenceManagement()
@property
def prop2(self):
return self.__prop2
@prop2.setter
def prop2(self, value):
self.__prop2 = value
persistenceManagement()
[...]
@property
def propN(self):
return self.__propN
@propN.setter
def propN(self, value):
self.__propN = value
persistenceManagement()
当然,这些块之间唯一不同的是属性名称(prop1、prop2、...、propN)。 persistenceManagement() 是一个函数,当这些属性之一的值发生变化时必须调用它。
由于除了单个信息(即属性名称)之外,这些代码块是相同的,我想必须有某种方法可以用单行替换这些代码块中的每一个,以声明具有给定名称的持久属性的存在.类似的东西
def someMagicalPatternFunction(...):
[...]
someMagicalPatternFunction("prop1")
someMagicalPatternFunction("prop2")
[...]
someMagicalPatternFunction("propN")
...或者可能是我目前看不到的一些装饰技巧。有人知道如何做到这一点吗?
【问题讨论】:
-
那么您要做的就是在设置任何这些属性后运行一个函数,对吧?
-
@Blender Well... 自动声明 setter 和 getter + 为 setter 添加一行代码以实现持久性。
-
@martineau 我责怪复制和粘贴。感谢您的关注。我已经编辑了问题。
标签: python properties persistence decorator