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.

Foi útil?

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
scroll top