有没有一种方法可以通过覆盖__setattr__
实例变量来防止或更改对 Python 中类变量的访问?
请注意,这个问题的标题有误,实际上是指实例变量,而不是类变量。
基于阅读有关(明显)死亡陷阱的多篇文章__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