如何在Python中使用lambda表达式定义属性
我试图用更少的代码编写Python属性,我想用lambdas定义getter和setter函数 所以,我试着这样做:如何在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
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行代码,加上它们之间的空行。