如何在__init__中调用属性设置器
我有一段Python代码:
import hashlib
class User:
def _set_password(self, value):
self._password = hashlib.sha1(value).hexdigest()
def _get_password(self):
return self._password
password = property(
fset = _set_password,
fget = _get_password)
def __init__(self, user_name, password):
self.password = password
u = User("bob", "password1")
print(u.password)
理论上,这段代码应该能打印出密码的SHA1值,但在构造函数中设置self.password时,它忽略了定义的属性,直接把值设成了"password1"。然后,打印语句读取的就是"password1"这个值。
我知道这是因为密码是在类上定义的,而不是在实例上,但我不太确定该怎么正确表示它才能正常工作。任何帮助都很感激。
1 个回答
14