【发布时间】:2014-06-18 10:47:05
【问题描述】:
有没有办法在 Python 中使用函数调用而不是“a.x = value”语法来设置属性?
说明: 有一堂课我没写。我必须从这个类中查询和设置各种数据。大多数项目都有 setter 和 getter 函数,如 getA() 和 setA(value)。但是其中一些项目已被声明为属性。我有一些代码可以在其中获取各种项目的 setter 函数,这样我就可以遍历它们。但它不适用于属性,因为没有 setter 函数。
class DataObject(object):
def __init__(self, data, setterFunc):
super(DataObject, self).__init__()
self._data = data
self._setterFunc = setterFunc
@property
def data(self):
return self._data
@data.setter
def data(self, value):
if self._setterFunc:
self._data = value
self._setterFunc(value)
foo = SomeClassIDidNotWrite()
objectList = []
objectList.append(DataObject(foo.getA(), foo.setA))
objectList.append(DataObject(foo.getB(), foo.setB))
# objectList.append(DataObject(foo.c, foo.c)) <-- This does not work
for dataObj in objectList:
dataObj.data = 5
【问题讨论】:
标签: python python-2.7 properties setter