2017-04-22 50 views
-1

我想用少量代碼編寫Python屬性,我想用lambda定義getter和setter函數。如何在Python中使用lambda表達式定義屬性

所以,我嘗試這樣的:

class Text(object): 

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

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

但不幸的是,我得到的第二個lambda表達式(在二傳手)錯誤,因爲你不能與分配定義拉姆達,對不對?

那麼有沒有其他的方式來編寫一個屬性(最好是內聯),將需要更少的代碼。私有屬性_content是字符串類型的,有沒有辦法將值賦給沒有=運算符的字符串。

+0

幹嘛還要擺在首位定義一個屬性,如果[你沒有做與任何有價值的東西(https://archive.org/details/SeanKellyRecoveryfromAddiction)? –

+0

看看這個http://stackoverflow.com/questions/6282042/assignment-inside-lambda-expression-in-python –

+0

哈哈,我只是更喜歡OOP封裝的概念:P。在這個例子中,這可能並不重要,但對於一些更大的類可能更有意義。你怎麼知道我不需要這個大型課堂,這只是一個例子? :P – Scarass

回答

1

可以是這樣做的:

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