Tôi có đoạn mã sau đây python:Làm thế nào để gọi một setter tài sản từ __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)
này nên về mặt lý thuyết in ra SHA1 của mật khẩu, tuy nhiên thiết self.password từ các nhà xây dựng bỏ qua xác định thuộc tính và chỉ đặt giá trị thành "password1". Giá trị của "password1" sau đó được đọc bởi câu lệnh in.
Tôi biết điều này là mật khẩu được định nghĩa trên lớp so với cá thể nhưng tôi không chắc chắn cách thể hiện nó chính xác để nó hoạt động. Bất kỳ trợ giúp sẽ được đánh giá cao.
tại sao bạn có thể hiện của '_password' và' password'? –
_password là trường lưu trữ. mật khẩu là accessor tài sản. _password ngụ ý một trường riêng. mật khẩu là giao thức công khai. –