문제

다음과 같은 파이썬 코드가 있습니다.

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"의 값은 인쇄 문에 의해 읽습니다.

나는 이것이 클래스에서 정의되는 비밀번호에 대한 내용이라는 것을 알고 있지만 인스턴스에 비해 올바르게 표현하는 방법을 잘 모르겠습니다. 모든 도움이 감사하겠습니다.

도움이 되었습니까?

해결책

속성은 설명 자이며 디스크립터는 새로운 스타일 클래스에서만 작동합니다. 노력하다:

class User(object): ...

대신에:

class User: ...

디스크립터에 대한 좋은 안내서를 찾을 수 있습니다 여기.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top