Mam następujący fragment kodu Pythona:Jak mogę zadzwonić setter właściwości z __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)
ta powinna teoretycznie wydrukować SHA1 hasła, jednak ustawienie self.password z konstruktor ignoruje zdefiniowana właściwość i po prostu ustawia wartość na "password1". Wartość "password1" jest następnie odczytywana przez instrukcję print.
Wiem, że jest to coś w rodzaju hasła, które jest zdefiniowane w klasie w stosunku do instancji, ale nie jestem pewien, jak poprawnie go przedstawić, aby działał. Każda pomoc będzie doceniona.
dlaczego masz wystąpienie '_password' i' password'? –
_password jest polem do przechowywania. hasło jest akcesoriem właściwości. _password oznacza prywatne pole. hasło jest publicznym protokołem. –