从这个页面:http ://www.brpreiss.com/books/opus7/html/page94.html
为什么
fget=lambda self: self.getNumberOfColumns()
使用?我知道这是为了能够使用Matrix().numberOfColumns
(作为属性),但是这里到底发生了什么?为什么我们不能使用函数
fget=self.getNumberOfColumns()
来代替呢?lambda
我很难理解这一点。有人可以解释一下吗?
从这个页面:http ://www.brpreiss.com/books/opus7/html/page94.html
为什么fget=lambda self: self.getNumberOfColumns()
使用?我知道这是为了能够使用Matrix().numberOfColumns
(作为属性),但是这里到底发生了什么?
为什么我们不能使用函数fget=self.getNumberOfColumns()
来代替呢?lambda
我很难理解这一点。有人可以解释一下吗?
你不能这样做fget=self.getNumberOfColumns
,因为self
没有在类范围内声明。
但是,这lambda
不是必需的;你可以把它写成
numberOfRows = property(fget=getNumberOfRows)
或者,甚至更好:
@property
def numberOfRows(self):
return self._numberOfRows
无需显式的 getter、property
调用和赋值。
您可以像这样避免使用 lambda:
@property
def numberOfColumns(self):
return self.getNumberOfColumns()