Frage

Ich habe folgendes Stück Python-Code:

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)

Diese in der Theorie sollten die SHA1 des Passworts ausdrucken, jedoch self.password Einstellung aus der Konstruktor die definierte Eigenschaft ignoriert und setzen nur den Wert auf „password1“. Der Wert von „password1“ wird dann durch die print-Anweisung lesen.

Ich weiß, das etwas nach unten zu Passwort ist auf der Klasse im Vergleich zu der Instanz definiert ist, aber ich bin nicht sicher, wie es richtig darzustellen, damit es funktioniert. Jede mögliche Hilfe würde geschätzt.

War es hilfreich?

Lösung

Eine Eigenschaft ist ein Schlagwort, und Deskriptoren arbeiten nur auf neuen Stil Klassen. Versuchen Sie:

class User(object): ...

statt:

class User: ...

Ein guter Leitfaden für Deskriptoren können hier gefunden werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top