<分区>
有没有一种方法可以通过重写实例变量的 __setattr__
来阻止或改变对 Python 中类变量的访问?
请注意 this question标题错误,实际上指的是实例变量,而不是类变量。
根据阅读多篇关于(明显的)死亡陷阱的文章,即 __slots__
,我宁愿不走那条路(而且我还没有充分研究以了解它是否做了什么我在问)。
例子:
class A(object):
foo = "don't change me"
def __setattr__(self, name, value):
raise ValueError
if __name__ == '__main__':
a1 = A()
print a1.foo # don't change me
print A.foo # don't change me
A.foo = 'bar' # ideally throw an exception or something here
print A.foo # bar
a2 = A()
print a1.foo # bar
print a2.foo # bar