Как я называю метод set свойства от __ 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" затем читается оператором печати.

Я знаю, что это - что-то вниз к паролю, определяемому на классе по сравнению с экземпляром, но я не уверен, как представить его правильно, таким образом, он работает. Любая справка ценилась бы.

10
задан smci 22 August 2012 в 02:16
поделиться

1 ответ

Свойство является дескриптором, и дескрипторы работают только с классами нового стиля. Попробуйте:

class User(object): ...

вместо:

class User: ...

Хорошее руководство по дескрипторам можно найти здесь .

14
ответ дан 3 December 2019 в 23:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: