property_method.py 5.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176
  1. # Property. getter, setter.
  2. '''
  3. class BandAccount:
  4. def __init__(self, name, balance) -> None:
  5. self.name = name
  6. self.__balance = balance
  7. def get_balance(self):
  8. return self.__balance
  9. def set_balance(self, value):
  10. if not isinstance(value, (int, float)):
  11. raise ValueError("Баланс должен быть числом")
  12. self.__balance = value
  13. '''
  14. '''
  15. class BankAccount:
  16. def __init__(self, name, balance) -> None:
  17. self.name = name
  18. self.__balance = balance
  19. def get_balance(self):
  20. return self.__balance
  21. def set_balance(self, value):
  22. if not isinstance(value, (int, float)):
  23. raise ValueError("Баланс должен быть числом")
  24. self.__balance = value
  25. def delete_balance(self):
  26. del self.__balance
  27. balance = property(fget=get_balance, fset=set_balance, fdel=delete_balance)
  28. '''
  29. class BankAccount:
  30. def __init__(self, name, balance) -> None:
  31. self.name = name
  32. self.__balance = balance
  33. def get_balance(self):
  34. return self.__balance
  35. def set_balance(self, value):
  36. if not isinstance(value, (int, float)):
  37. raise ValueError("Баланс должен быть числом")
  38. self.__balance = value
  39. def delete_balance(self):
  40. del self.__balance
  41. balance = property(fget=get_balance, fset=set_balance, fdel=delete_balance)
  42. class BankAccount:
  43. def __init__(self, account_number, balance) -> None:
  44. self._account_number = account_number
  45. self._balance = balance
  46. def get_account_number(self):
  47. return self._account_number
  48. def get_balance(self):
  49. return self._balance
  50. def set_balance(self, value):
  51. if not isinstance(value, (int, float)):
  52. raise ValueError("ErrorValue!!!")
  53. self._balance = value
  54. class Employee:
  55. def __init__(self, name, salary) -> None:
  56. self.__name = name
  57. self.__salary = salary
  58. def __get_name(self):
  59. return self.__name
  60. def __get_salary(self):
  61. return self.__salary
  62. def __set_salary(self, value):
  63. if not isinstance(value, (int, float)) or (value < 0):
  64. print(f"ErrorValue:{value}")
  65. return
  66. self.__salary = value
  67. title = property(fget=__get_name)
  68. reward = property(fget=__get_salary, fset=__set_salary)
  69. class UserMail:
  70. def __init__(self, login, email: str):
  71. self.login = login
  72. self.__email = email
  73. def get_email(self):
  74. return self.__email
  75. def set_email(self, email):
  76. if not isinstance(email, str):
  77. print(f"ErrorMail:{email}")
  78. return
  79. if email.count('@') == 1 and (email.rfind('@') < email.rfind('.')):
  80. self.__email = email
  81. else:
  82. print(f"ErrorMail:{email}")
  83. return
  84. email = property(fget=get_email, fset=set_email)
  85. def main():
  86. '''
  87. acc = BandAccount('Ivan', 200)
  88. acc.balance = 400
  89. print(acc.balance)
  90. '''
  91. '''
  92. employee = Employee("John Doe", 50000)
  93. assert employee.title == "John Doe"
  94. assert employee._Employee__name == "John Doe"
  95. assert isinstance(employee, Employee)
  96. assert isinstance(type(employee).title, property), 'Вы не создали property title'
  97. assert isinstance(type(employee).reward, property), 'Вы не создали property reward'
  98. assert employee.reward == 50000
  99. employee.reward = -100 # ErrorValue:-100
  100. employee.reward = 1.5
  101. assert employee.reward == 1.5
  102. employee.reward = 70000
  103. assert employee.reward == 70000
  104. employee.reward = 'hello' # Печатает ErrorValue:hello
  105. employee.reward = '777' # Печатает ErrorValue:777
  106. employee.reward = [1, 2] # Печатает ErrorValue:[1, 2]
  107. assert employee.reward == 70000
  108. employee._Employee__set_salary(55000)
  109. assert employee._Employee__get_salary() == 55000
  110. '''
  111. jim = UserMail("aka47", 'hello@com.org')
  112. assert jim.login == "aka47"
  113. assert jim._UserMail__email == "hello@com.org"
  114. assert isinstance(jim, UserMail)
  115. assert isinstance(type(jim).email, property), 'Вы не создали property email'
  116. jim.email = [1, 2, 3] # печатает ErrorMail:[1, 2, 3]
  117. jim.email = 'hello@@re.ee' # печатает ErrorMail:hello@@re.ee
  118. jim.email = 'hello@re.w3'
  119. assert jim.email == 'hello@re.w3'
  120. k = UserMail('belosnezhka', 'prince@wait.you')
  121. assert k.email == 'prince@wait.you'
  122. assert k.login == 'belosnezhka'
  123. assert isinstance(k, UserMail)
  124. k.email = {1, 2, 3} # печатает ErrorMail:{1, 2, 3}
  125. k.email = 'prince@still@.wait' # печатает ErrorMail:prince@still@.wait
  126. k.email = 'prince@stillwait' # печатает ErrorMail:prince@stillwait
  127. k.email = 'prince@still.wait'
  128. assert k.get_email() == 'prince@still.wait'
  129. k.email = 'pri.nce@stillwait' # печатает ErrorMail:pri.nce@stillwait
  130. assert k.email == 'prince@still.wait'
  131. if __name__ == '__main__':
  132. main()