Ho il seguente pezzo di codice Python:Come chiamare un setter di proprietà da __init__
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)
Questo dovrebbe, in teoria, stampare lo SHA1 della password, tuttavia l'impostazione self.password dal costruttore ignora il proprietà definita e imposta semplicemente il valore su "password1". Il valore di "password1" viene quindi letto dall'istruzione print.
So che si tratta di qualcosa che si definisce in base alla password sulla classe rispetto all'istanza, ma non sono sicuro di come rappresentarlo correttamente, quindi funziona. Qualsiasi aiuto sarebbe apprezzato.
perché hai istanze di '_password' e' password'? –
_password è il campo di archiviazione. la password è la proprietà di accesso. _password implica un campo privato. la password è il protocollo pubblico. –