【发布时间】:2012-09-03 19:01:54
【问题描述】:
有没有一种方法可以通过覆盖 __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
【问题讨论】:
-
mike 链接的问题有一条链接到docs.python.org/library/functions.html#property 的评论,这可能就是您要查找的内容。
-
@mike 是的,看起来是这样。该死的。这可能应该作为一个骗局关闭。