【问题标题】:How to define property with lambda expression in Python如何在 Python 中使用 lambda 表达式定义属性
【发布时间】:2017-04-22 23:06:12
【问题描述】:

我正在尝试使用更少的代码编写 Python 属性,我想使用 lambda 定义 getter 和 setter 函数。

所以,我尝试这样:

class Text(object):

    content = property(lambda self: self._content,
                       lambda self,content: self._content = content)

    def __init__(self, content):
        self._content = content
        pass

但不幸的是,我在第二个 lambda 表达式(在 setter 上)时遇到错误,因为您不能用赋值定义 lambda,对吧?

那么有没有其他方法可以编写需要更少代码的属性(最好是内联)。私有属性 _content 是字符串类型,有没有办法在没有 = 运算符的情况下为字符串赋值。

【问题讨论】:

  • 如果you're not doing anything with the value,你为什么还要首先定义一个属性?
  • 哈哈,我只是更喜欢 OOP 中的封装概念:P。也许在这个例子中它不是那么重要,但对于一些更大的类可能更有意义。你怎么知道我在一些更大的课程中不需要这个,这只是一个例子? :P
  • 因为如果这是一个更大的类,你不会关心保存两行代码。
  • 我当然会,实际上写getter和setter需要4行,加上它们之间的空行。

标签: python lambda variable-assignment


【解决方案1】:

你可以这样做:

content = property(lambda self: self._content,
                   lambda self,content: setattr(self, '_content' ,content))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-30
    相关资源
    最近更新 更多