[英]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
(或者,如果有效值為0
, 42 if self._foo is None else self._foo
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.