查看以下python3.3代码:
class Test(object):
def __init__(self):
self.__dict__['param'] = {'example': 10}
def __getattr__(self, name):
if name in self._param.keys():
return self._param[name]
else:
raise AttributeError(name)
def __setattr__(self, name, value):
if name in self._param.keys():
self.__dict__['param'][name] = value
else:
raise AttributeError(name)
test = Test()
print(test.example)
test.example = 20
print(test.example)
方法__getattr__
用于获取存储在实例化类中的变量的实例。是否可以区分对__getattr__
的调用是为了获取值还是设置它?
如果没有,我如何调整代码,以便在__getattr__
(或其他)调用更改我的dict _params
中的值时,我可以设置或旗帜或任何东西。我希望能够在更改值时设置标志。如果只读取一个值,则不必设置任何标志。
另一种可能性是防止'设置值,如给定的例子。