我已經編寫了一個類,用於酸洗方便的存儲參數。它超載__setattr__
以方便訪問。它還使用一個列表記住添加的屬性的順序,以便迭代順序可預測並保持不變。那就是:如何處理__init__對__setattr__的調用?
class Parameters(object):
def __init__(self):
self._paramOrder = []
def __setattr__(self, name, value):
self._paramOrder.append(name)
object.__setattr__(self, name, value)
def __delattr__(self, name):
self._paramOrder.remove(name)
object.__delattr__(self, name)
def __iter__(self):
for name in self._paramOrder:
yield self.name
def iteritems(self):
for name in self._paramOrder:
yield name, self.name
的問題是,__init__
叫我爲了給_paramOrder
添加到實例字典超載__setattr__
。有沒有辦法處理這個問題,而不需要增加一個特殊的例子到__setattr__
?
我這樣做的權利,但我仍然需要一個特殊的情況,因爲否則的名字'_paramOrder'將被添加到'_paramOrder'。 – 2010-10-06 09:11:34
這不是你展示的代碼。這應該繞過參數的__setattr__方法。 – aaronasterling 2010-10-06 09:13:21
你說得對。我誤解了,但現在我明白了。 – 2010-10-06 09:14:46