簡體   English   中英

更簡潔的形式來在python中設置只讀的@property

[英]More concise form to set a read-only `@property` in python

我知道,如果要在python中設置只讀屬性,可以在類中執行以下操作:

class Foo(object):

    @property
    def foo(self):
        return self._foo

但是在我擁有許多與此屬性一樣簡單的屬性的情況下,它似乎仍然太長(3/4行)。

我知道我可以自己編寫系統代碼來創建只讀屬性,但是我想避免重新發明輪子。

我想知道是否有可以執行類似操作的特殊功能:

create_ro_property(self,"foo","_foo",42) # where 42 is the initial value of 42

這將創建一個只讀屬性foo ,可以通過_foo在內部將其設置為對象。

有任何想法嗎?

您可以按照以下步驟進行操作:

class Foo(object):

    foo = property(lambda self: self._foo)

@只是語法糖,而lambda可以代替普通的def來創建吸氣劑。

注意,這並沒有設置初始值42 您仍然必須這樣做,例如在__init__ 或者,也許您可​​以在__getattr__做一些聰明的事情,以使以_開頭的缺少屬性返回None ,然后將返回值self._foo or 42 (或者,如果有效值為042 if self._foo is None else self._foo )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM