擅长:python、mysql、java
<p>您可以通过在构造函数中直接分配给实例字典来绕过<strong>setattr</strong>。当然,这个技巧总是可以用来欺骗你用来使∗ssn变为只读的(在初始写入之后)</p>
<pre><code> class Person(object):
def __init__(self, name, ssn):
self.name = name
self.__dict__['_ssn'] = ssn
def __setattr__(self, name, value):
if name == '_ssn':
raise AttributeError('Denied.')
else:
object.__setattr__(self, name, value)
</code></pre>