【问题标题】:Why is this made a property using a lambda function?为什么使用 lambda 函数将其设为属性?
【发布时间】:2013-08-27 05:52:12
【问题描述】:

从此页面:http://www.brpreiss.com/books/opus7/html/page94.html

  1. 为什么使用fget=lambda self: self.getNumberOfColumns()?我知道这是为了能够使用Matrix().numberOfColumns(作为属性),但这里到底发生了什么?

  2. 为什么我们不能使用fget=self.getNumberOfColumns() 而不是使用lambda 函数?

我很难理解这一点。谁能解释一下?

【问题讨论】:

    标签: python python-2.7 data-structures lambda getter


    【解决方案1】:

    你不能这样做 fget=self.getNumberOfColumns 因为 self 没有在类范围内声明。

    但是,lambda 不是必需的;你可以写成

    numberOfRows = property(fget=getNumberOfRows)
    

    或者,甚至更好:

    @property
    def numberOfRows(self):
        return self._numberOfRows
    

    无需显式的 getter、property 调用和赋值。

    【讨论】:

      【解决方案2】:

      你可以像这样避免 lambda:

      @property
      def numberOfColumns(self):
          return self.getNumberOfColumns()
      

      【讨论】:

      • 我会在这样的客户端中使用它:cols = Matrix().numberOfColumns。对吗?
      猜你喜欢
      • 2011-03-16
      • 1970-01-01
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 2011-11-14
      • 1970-01-01
      • 2013-07-03
      相关资源
      最近更新 更多