user.py 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. from tool.type_ import *
  2. from enum import Enum
  3. class UserNotSupportError(Exception):
  4. pass
  5. class UserType(Enum):
  6. normal: enum = 1
  7. manager: enum = 2
  8. class User:
  9. def __init__(self, name: uname_t, uid: uid_t, user_type: enum):
  10. self._name: uname_t = name
  11. self._uid: uid_t = uid
  12. self._type: enum = user_type
  13. def get_uid(self) -> uid_t:
  14. return self._uid
  15. def get_name(self) -> uname_t:
  16. return self._name
  17. def get_info(self) -> Dict[str: uid_t, str: uname_t]:
  18. return {
  19. "name": self._name,
  20. "uid": self._uid,
  21. }
  22. def evaluate(self) -> score_t:
  23. raise UserNotSupportError
  24. def add_score(self, score: score_t) -> score_t:
  25. raise UserNotSupportError
  26. def throw_rubbish(self) -> count_t:
  27. raise UserNotSupportError
  28. class NormalUser(User):
  29. def __init__(self, name: uname_t, uid: uid_t, reputation: score_t, rubbish: count_t, score: score_t):
  30. super(NormalUser, self).__init__(name, uid, UserType.normal)
  31. self._reputation = reputation
  32. self._rubbish = rubbish
  33. self._score = score
  34. def get_info(self) -> Dict[str: uid_t, str: uname_t, str: score_t, str: count_t]:
  35. """
  36. 获取当前用户的简单信息
  37. :return: 用户信息字典
  38. """
  39. return {
  40. "name": self._name,
  41. "uid": self._uid,
  42. "reputation": self._reputation,
  43. "rubbish": self._rubbish,
  44. "score": self._score
  45. }
  46. def evaluate(self) -> score_t:
  47. """
  48. 评估信誉积分
  49. :return: 信誉积分
  50. """
  51. ...
  52. def add_score(self, score: score_t) -> score_t:
  53. self._score += score
  54. return self._score
  55. def throw_rubbish(self) -> count_t:
  56. self._rubbish += 1
  57. return self._rubbish
  58. class ManagerUser(User):
  59. def __init__(self, name: uname_t, uid: uid_t):
  60. super(ManagerUser, self).__init__(name, uid, UserType.normal)