クラスが初期化された後、クラスの一部の属性に対するそれ以上の割り当てを禁止したいと考えています。例えば; 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.