【发布时间】: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