使用__getattr__,如何查看值是设置还是获取?

时间:2014-08-20 17:52:12

标签: python

查看以下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中的值时,我可以设置或旗帜或任何东西。我希望能够在更改值时设置标志。如果只读取一个值,则不必设置任何标志。

另一种可能性是防止'设置值,如给定的例子。

0 个答案:

没有答案