Como posso chamar um setter propriedade de __init__
-
12-09-2019 - |
Pergunta
Eu tenho o seguinte pedaço de código 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)
Esta deve, em teoria imprimir o SHA1 da senha, no entanto definir self.password a partir do construtor ignora a propriedade definido e apenas define o valor para "password1". O valor de "password1" é então lido pela instrução de impressão.
Eu sei que isso é algo para baixo a senha a ser definida na classe versus o exemplo, mas não tenho certeza de como representá-lo corretamente para que ele funciona. Qualquer ajuda seria apreciada.
Solução
A propriedade é um descritor, e descritores único trabalho em classes new-style. Tente:
class User(object): ...
em vez de:
class User: ...
Um bom guia para descritores podem ser encontrados aqui .
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow