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
    。对吗?