1
我正在尋找一個Python類裝飾器將轉換任何元素獲得屬性的訪問,這樣的事情:Python類裝飾轉換元件訪問屬性訪問
@DictAccess
class foo(bar):
x = 1
y = 2
myfoo = foo()
print myfoo.x # gives 1
print myfoo['y'] # gives 2
myfoo['z'] = 3
print myfoo.z # gives 3
等是否存在裝飾已地方?如果不是,那麼實施它的正確方法是什麼?我是否應該將__new__
包裝在類foo
上並將__getitem__
和__setitem__
屬性添加到實例中?那麼如何讓這些新課程正確地綁定到新課堂呢?我明白DictMixin
可以幫助我支持所有的dict
功能,但我仍然必須以某種方式獲得類中的基本方法。
和'__delitem __()'。另外,你可能想要防止踩踏,比如'__dict__'。 – 2012-02-02 02:35:14
@ IgnacioVazquez-Abrams我同意,有許多方法可以擴展基本配方(可能包括由* MutableMapping *提供的完整字典API,也許試圖保護對象的命名空間的某些部分)。就目前而言,上面的代碼很簡單,足以讓OP開始這個冒險:-) – 2012-02-02 02:41:39
謝謝,這看起來不錯。跺腳__dict__'不是問題 - 我知道哪些屬性將被訪問。但是獲得DictMixin功能的可能性會很有趣。任何想法如何做到這一點? – StasM 2012-02-02 05:59:04