سؤال

لدي الجزء التالي من رمز بيثون:

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 من كلمة المرور، مهما كان إعداد Nelf.Password من المنشئ يتجاهل الخاصية المحددة ويعيد فقط القيمة إلى "كلمة المرور 1". ثم يتم قراءة قيمة "كلمة المرور 1" بواسطة بيان الطباعة.

أعلم أن هذا شيء وصولا إلى كلمة المرور قيد المعرفة على الفئة مقابل المثال، لكنني لست متأكدا من كيفية تمثيله بشكل صحيح حتى يعمل. سيكون موضع تقدير أي مساعدة.

هل كانت مفيدة؟

المحلول

خاصية هو واصف، ويماصفات تعمل فقط على فئات النمط الجديد. يحاول:

class User(object): ...

بدلا من:

class User: ...

يمكن العثور على دليل جيد للوصفات هنا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top