我想在初始化一個類的某些屬性時禁止進一步的分配。例如;在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