如何在Python中使用lambda表达式定义属性

如何在Python中使用lambda表达式定义属性,python,lambda,variable-assignment,Python,Lambda,Variable Assignment,我试图用更少的代码编写Python属性,我想用lambdas定义getter和setter函数 所以,我试着这样做: class Text(object): content = property(lambda self: self._content, lambda self,content: self._content = content) def __init__(self, content): self._co

我试图用更少的代码编写Python属性,我想用lambdas定义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
content = property(lambda self: self._content,
                   lambda self,content: setattr(self, '_content' ,content))
但不幸的是,我在第二个lambda表达式(在setter上)上遇到了错误,因为您不能用赋值定义lambda,对吗


那么,有没有其他方法来编写一个属性(最好是内联的),这样代码就更少了。Private attribute\u content是string类型,有没有一种方法可以在不使用=运算符的情况下为string赋值。

您可以这样做:

class Text(object):

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

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

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