我想在初始化一个类的某些属性时禁止进一步的分配。例如;在Person实例'p'初始化后,没有人可以明确地为'ssn'(社会安全号码)属性赋值。 _ SETATTR _而分配值内_ 初始化 _方法也被称为,因此它是不是我想要的。我只想限制进一步的作业。我怎样才能做到这一点?如何限制在构造函数外设置属性?
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.
只是因为在'分配__init__'还呼吁'__setattr__' – neoascetic
我想你可能不得不尝试元类 –
仅供参考,这实际上并不是Python如何工作。记录您的API以告诉其他开发人员不要更改它。 – detly