Python 为什么这是一个使用lambda函数的属性?
从本页:Python 为什么这是一个使用lambda函数的属性?,python,python-2.7,data-structures,lambda,getter,Python,Python 2.7,Data Structures,Lambda,Getter,从本页: 为什么要使用fget=lambda self:self.getNumberOfColumns()?我知道这是为了能够使用Matrix().numberOfColumns(作为一个属性),但这里到底发生了什么 为什么我们不能使用fget=self.getNumberOfColumns()而不是lambda函数 我很难理解这一点。有人能解释一下吗?您不能执行fget=self.getNumberOfColumns,因为类范围中没有声明self 但是,lambda不是必需的;你可以这样写
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,
属性
调用和赋值。您不能执行fget=self.getNumberOfColumns
,因为类范围中没有声明self
但是,lambda
不是必需的;你可以这样写
numberOfRows = property(fget=getNumberOfRows)
或者,更好的是:
@property
def numberOfRows(self):
return self._numberOfRows
不需要显式的getter、
属性
调用和赋值。您可以像这样避免lambda:
@property
def numberOfColumns(self):
return self.getNumberOfColumns()
您可以像这样避开lambda:
@property
def numberOfColumns(self):
return self.getNumberOfColumns()
我会在这样的客户端中使用它:
cols=Matrix().numberOfColumns
。对吗?我会在这样的客户端中使用它:cols=Matrix().numberOfColumns
。对吗?