我想在初始化后禁止对类的某些属性进行进一步的分配。例如; 在 Person 实例“p”初始化后,没有人可以显式地为“ssn”(社会安全号码)属性分配任何值。_ setattr _在_ init _方法中分配值时也被调用,因此这不是我想要的。我只想限制进一步的任务。我怎样才能做到这一点?
class Person(object):
def __init__(self, name, ssn):
self.name = name
self._ssn = ssn
def __setattr__(self, name, value):
if name == '_ssn':
raise AttributeError('Denied.')
else:
object.__setattr__(self, name, value)
>> p = Person('Ozgur', '1234')
>> AttributeError: Denied.