我有這樣的:普通屬性實現GETATTR/SETATTR
class MySession:
def __init__(self, session):
session['my-data'] = {} # my data is here
self._session = session
def __getattr__(self, name):
return self._session['my-data'][name]
def __setattr__(self, name, value):
my_data = self._session['my-data']
my_data[name] = value
self._session['my-data'] = my_data
obj = MySession({})
obj.x = 3
基本上我想封裝與對象訪問會話(子)字典屬性的訪問。但我不能這樣做,因爲這將導致無限遞歸,我猜是因爲這樣做:
self._session = session
電話SETATTR,進而調用GETATTR,進而調用GETATTR等
我怎麼能預 - 在實現getattr/setattr的類中初始化一些(普通)屬性?
這會導致同樣的無限遞歸:self.session再次GETATTR – dangonfast