|
@@ -1,3 +1,5 @@
|
|
|
+import hashlib
|
|
|
+import os
|
|
|
|
|
|
class BankAccount:
|
|
|
|
|
@@ -91,12 +93,99 @@ class Notebook:
|
|
|
for i, j in enumerate(self._notes):
|
|
|
print(f"{i+1}.{j}")
|
|
|
|
|
|
+
|
|
|
+class User:
|
|
|
+ def __init__(self, name, password) -> None:
|
|
|
+ self.name = name
|
|
|
+ self.password = password
|
|
|
+
|
|
|
+ @property
|
|
|
+ def password(self):
|
|
|
+ raise AttributeError("Пароль можно только менять, нельзя смотреть")
|
|
|
+
|
|
|
+ @password.setter
|
|
|
+ def password(self, plaintext):
|
|
|
+ salt = os.urandom(32)
|
|
|
+ self._hashed_password = hashlib.pbkdf2_hmac(
|
|
|
+ "sha256", plaintext.encode("utf-8"), salt, 100_000
|
|
|
+ )
|
|
|
+
|
|
|
+
|
|
|
+class Money:
|
|
|
+ def __init__(self, dollars, cents):
|
|
|
+ # self.total_cents = 0
|
|
|
+ self.total_cents = dollars*100 + cents
|
|
|
+
|
|
|
+ @property
|
|
|
+ def dollars(self):
|
|
|
+ return self.total_cents//100
|
|
|
+
|
|
|
+ @dollars.setter
|
|
|
+ def dollars(self, value):
|
|
|
+ if not isinstance(value, (int)):
|
|
|
+ print("Error dollars")
|
|
|
+ return
|
|
|
+ if value < 0:
|
|
|
+ print("Error dollars")
|
|
|
+ return
|
|
|
+ else:
|
|
|
+ self.total_cents = self.total_cents%100 + value*100
|
|
|
+
|
|
|
+ @property
|
|
|
+ def cents(self):
|
|
|
+ return self.total_cents%100
|
|
|
+
|
|
|
+ @cents.setter
|
|
|
+ def cents(self, value):
|
|
|
+ if not isinstance(value, (int)):
|
|
|
+ print("Error cents")
|
|
|
+ elif value < 0 or value > 100:
|
|
|
+ print("Error cents")
|
|
|
+ else:
|
|
|
+ self.total_cents = (self.total_cents//100)*100 + value
|
|
|
+
|
|
|
+ def __str__(self) -> str:
|
|
|
+ return f"Ваше состояние составляет {self.total_cents//100} долларов {self.total_cents%100} центов"
|
|
|
+
|
|
|
+
|
|
|
def main():
|
|
|
# acc = BankAccount('Ivan', 200)
|
|
|
# print(acc.my_balance)
|
|
|
|
|
|
+ '''
|
|
|
note = Notebook(['Buy Potato', 'Buy Carrot', 'Wash car'])
|
|
|
note.notes_list
|
|
|
+ '''
|
|
|
+ bill = Money(101, 99)
|
|
|
+ assert isinstance(bill, Money)
|
|
|
+
|
|
|
+ print(bill.__dict__.keys())
|
|
|
+
|
|
|
+ print(bill) # Ваше состояние составляет 101 долларов 99 центов
|
|
|
+ print(bill.dollars, bill.cents) # 101 99
|
|
|
+ print(bill.total_cents)
|
|
|
+ bill.dollars = 666
|
|
|
+ print(bill.total_cents)
|
|
|
+ print(bill) # Ваше состояние составляет 666 долларов 99 центов
|
|
|
+ bill.cents = 12
|
|
|
+ print(bill.total_cents)
|
|
|
+ print(bill) # Ваше состояние составляет 666 долларов 12 центов
|
|
|
+
|
|
|
+ print(bill.total_cents)
|
|
|
+
|
|
|
+ assert bill.total_cents == 66612
|
|
|
+ assert list(bill.__dict__.keys()) == ['total_cents']
|
|
|
+
|
|
|
+ ken = Money(111, 90)
|
|
|
+ assert isinstance(ken, Money)
|
|
|
+ print(ken)
|
|
|
+ ken.dollars = 'hello' # Error dollars
|
|
|
+ ken.dollars = 0
|
|
|
+ print(ken)
|
|
|
+ ken.cents = [1, 2, 3] # Error cents
|
|
|
+ ken.cents = 100 # Error cents
|
|
|
+ ken.cents = 99
|
|
|
+ print(ken)
|
|
|
|
|
|
'''
|
|
|
box = MagicBox("rubies")
|