如何调用从__init__属性setter
-
12-09-2019 - |
题
我的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从构造忽略定义的属性和只设置值设置为“密码1”。的“密码1”的值,然后由打印语句读出。
我知道这是什么降到密码的类与实例被定义,但我不知道如何正确地表现它,所以它的工作原理。任何帮助,将不胜感激。
解决方案
一个属性是一个描述符和描述符,只对新的样式类工作。尝试:
class User(object): ...
,而不是:
class User: ...
一个好的引导描述符,可以发现 rel="noreferrer">。
不隶属于 StackOverflow