property_method.py 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157
  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 BandAccount:
  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, account_number, balance) -> None:
  31. self._account_number = account_number
  32. self._balance = balance
  33. def get_account_number(self):
  34. return self._account_number
  35. def get_balance(self):
  36. return self._balance
  37. def set_balance(self, value):
  38. if not isinstance(value, (int, float)):
  39. raise ValueError("ErrorValue!!!")
  40. self._balance = value
  41. class Employee:
  42. def __init__(self, name, salary) -> None:
  43. self.__name = name
  44. self.__salary = salary
  45. def __get_name(self):
  46. return self.__name
  47. def __get_salary(self):
  48. return self.__salary
  49. def __set_salary(self, value):
  50. if not isinstance(value, (int, float)) or (value < 0):
  51. print(f"ErrorValue:{value}")
  52. return
  53. self.__salary = value
  54. title = property(fget=__get_name)
  55. reward = property(fget=__get_salary, fset=__set_salary)
  56. class UserMail:
  57. def __init__(self, login, email: str):
  58. self.login = login
  59. self.__email = email
  60. def get_email(self):
  61. return self.__email
  62. def set_email(self, email):
  63. if not isinstance(email, str):
  64. print(f"ErrorMail:{email}")
  65. return
  66. if email.count('@') == 1 and (email.rfind('@') < email.rfind('.')):
  67. self.__email = email
  68. else:
  69. print(f"ErrorMail:{email}")
  70. return
  71. email = property(fget=get_email, fset=set_email)
  72. def main():
  73. '''
  74. acc = BandAccount('Ivan', 200)
  75. acc.balance = 400
  76. print(acc.balance)
  77. '''
  78. '''
  79. employee = Employee("John Doe", 50000)
  80. assert employee.title == "John Doe"
  81. assert employee._Employee__name == "John Doe"
  82. assert isinstance(employee, Employee)
  83. assert isinstance(type(employee).title, property), 'Вы не создали property title'
  84. assert isinstance(type(employee).reward, property), 'Вы не создали property reward'
  85. assert employee.reward == 50000
  86. employee.reward = -100 # ErrorValue:-100
  87. employee.reward = 1.5
  88. assert employee.reward == 1.5
  89. employee.reward = 70000
  90. assert employee.reward == 70000
  91. employee.reward = 'hello' # Печатает ErrorValue:hello
  92. employee.reward = '777' # Печатает ErrorValue:777
  93. employee.reward = [1, 2] # Печатает ErrorValue:[1, 2]
  94. assert employee.reward == 70000
  95. employee._Employee__set_salary(55000)
  96. assert employee._Employee__get_salary() == 55000
  97. '''
  98. jim = UserMail("aka47", 'hello@com.org')
  99. assert jim.login == "aka47"
  100. assert jim._UserMail__email == "hello@com.org"
  101. assert isinstance(jim, UserMail)
  102. assert isinstance(type(jim).email, property), 'Вы не создали property email'
  103. jim.email = [1, 2, 3] # печатает ErrorMail:[1, 2, 3]
  104. jim.email = 'hello@@re.ee' # печатает ErrorMail:hello@@re.ee
  105. jim.email = 'hello@re.w3'
  106. assert jim.email == 'hello@re.w3'
  107. k = UserMail('belosnezhka', 'prince@wait.you')
  108. assert k.email == 'prince@wait.you'
  109. assert k.login == 'belosnezhka'
  110. assert isinstance(k, UserMail)
  111. k.email = {1, 2, 3} # печатает ErrorMail:{1, 2, 3}
  112. k.email = 'prince@still@.wait' # печатает ErrorMail:prince@still@.wait
  113. k.email = 'prince@stillwait' # печатает ErrorMail:prince@stillwait
  114. k.email = 'prince@still.wait'
  115. assert k.get_email() == 'prince@still.wait'
  116. k.email = 'pri.nce@stillwait' # печатает ErrorMail:pri.nce@stillwait
  117. assert k.email == 'prince@still.wait'
  118. if __name__ == '__main__':
  119. main()